Merge "Fix problem with dangling check of rules with multi-rules"
diff --git a/plugins/org.eclipse.emf.henshin.diagram/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.henshin.diagram/META-INF/MANIFEST.MF
index 63ed06d..016ce92 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.henshin.diagram/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@
 Bundle-SymbolicName: org.eclipse.emf.henshin.diagram; singleton:=true
 Bundle-Version: 1.5.0.qualifier
 Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.henshin.diagram.part.HenshinDiagramEditorPlugin
diff --git a/plugins/org.eclipse.emf.henshin.diagram/plugin.xml b/plugins/org.eclipse.emf.henshin.diagram/plugin.xml
index 4dbd771..a4082ed 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/plugin.xml
+++ b/plugins/org.eclipse.emf.henshin.diagram/plugin.xml
@@ -582,25 +582,16 @@
          sequence="F5"/>
    </extension>
 
-   <extension point="org.eclipse.ui.commands" id="reveal-cmd">
+   <extension point="org.eclipse.ui.commands" id="menu-commands">
       <?gmfgen generated="true"?>
-      <command
-         categoryId="org.eclipse.ui.category.navigate"
-         defaultHandler="org.eclipse.emf.henshin.diagram.part.HenshinDiagramRevealUnitCommand"
-         description="%update.diagram.description"
-         id="org.eclipse.emf.henshin.diagram.revealUnit"
-         name="%update.diagram.name"/>
+      <category id="org.eclipse.emf.henshin.diagram.part.HenshinDiagramEditorID" name="%cmdcategory.name" description="%cmdcategory.desc"/>
+      <command id="org.eclipse.emf.henshin.diagram.LoadResourceAction"
+         name="Load Resource"
+         categoryId="org.eclipse.emf.henshin.diagram.part.HenshinDiagramEditorID"
+         defaultHandler="org.eclipse.emf.henshin.diagram.part.LoadResourceAction"/>
    </extension>
    
-   <extension point="org.eclipse.ui.bindings" id="reveal-cmd-binding">
-      <?gmfgen generated="true"?>
-      <key 
-         commandId="org.eclipse.emf.henshin.diagram.revealUnit"
-         contextId="org.eclipse.emf.henshin.diagram.ui.diagramContext"
-         schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
-         sequence="F3"/>
-   </extension>
-   
+      
    <extension point="org.eclipse.ui.menus" id="context-menus">
       <?gmfgen generated="true"?>
       <!-- menuContribution locationURI="menu:org.eclipse.ui.main.menu?after=">
@@ -621,15 +612,7 @@
       </menuContribution>
    </extension>
 
-   <extension point="org.eclipse.ui.commands" id="menu-commands">
-      <?gmfgen generated="true"?>
-      <category id="org.eclipse.emf.henshin.diagram.part.HenshinDiagramEditorID" name="%cmdcategory.name" description="%cmdcategory.desc"/>
-      <command id="org.eclipse.emf.henshin.diagram.LoadResourceAction"
-         name="Load Resource"
-         categoryId="org.eclipse.emf.henshin.diagram.part.HenshinDiagramEditorID"
-         defaultHandler="org.eclipse.emf.henshin.diagram.part.LoadResourceAction"/>
-   </extension>
-
+   
    <extension point="org.eclipse.ui.handlers" id="menu-handlers">
       <?gmfgen generated="true"?>
    </extension>
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/commands/NodeCreateCommand.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/commands/NodeCreateCommand.java
index 8acbc1b..6b9c804 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/commands/NodeCreateCommand.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/commands/NodeCreateCommand.java
@@ -366,13 +366,12 @@
 						text = text + Action.MULTI_MARKER;
 					}
 					String pathText = path.getText().trim();
-					if (pathText.length()>0 && !pathText.startsWith(Action.PATH_SEPARATOR+"") && 
-							!pathText.startsWith(Action.FRAGMENT_START+"")) {
+					if (pathText.length() > 0 && !pathText.startsWith(Action.PATH_SEPARATOR + "")
+							&& !pathText.startsWith(Action.FRAGMENT_START + "")) {
 						if (action.isMulti()) {
-							pathText = Action.PATH_SEPARATOR + pathText;							
-						} else if (action.getType() == Type.FORBID ||
-								action.getType() == Type.REQUIRE) {  
-							pathText = Action.FRAGMENT_START + pathText;							
+							pathText = Action.PATH_SEPARATOR + pathText;
+						} else if (action.getType() == Type.FORBID || action.getType() == Type.REQUIRE) {
+							pathText = Action.FRAGMENT_START + pathText;
 						}
 					}
 					text = text + pathText;
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/helpers/RuleEditHelper.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/helpers/RuleEditHelper.java
index 349018c..87672c8 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/helpers/RuleEditHelper.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/helpers/RuleEditHelper.java
@@ -99,8 +99,8 @@
 	 */
 	public static boolean isRuleView(View view) {
 		// We allow only the root view for rules.
-		return (view != null && view.getElement() instanceof Rule && view.getType().equals(
-				String.valueOf(RuleEditPart.VISUAL_ID)));
+		return (view != null && view.getElement() instanceof Rule
+				&& view.getType().equals(String.valueOf(RuleEditPart.VISUAL_ID)));
 	}
 
 	/**
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionBodyEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionBodyEditPart.java
index 128db08..aaecb7b 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionBodyEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionBodyEditPart.java
@@ -252,11 +252,12 @@
 					final EObject element = getParserElement();
 					final IParser parser = getParser();
 					try {
-						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(
-								new RunnableWithResult.Impl<IParserEditStatus>() {
+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()
+								.runExclusive(new RunnableWithResult.Impl<IParserEditStatus>() {
 
 									public void run() {
-										setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
+										setResult(
+												parser.isValidEditString(new EObjectAdapter(element), (String) value));
 									}
 								});
 						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
@@ -293,12 +294,9 @@
 	 */
 	public IParser getParser() {
 		if (parser == null) {
-			parser = HenshinParserProvider
-					.getParser(
-							HenshinElementTypes.AttributeCondition_3005,
-							getParserElement(),
-							HenshinVisualIDRegistry
-									.getType(org.eclipse.emf.henshin.diagram.edit.parts.AttributeConditionBodyEditPart.VISUAL_ID));
+			parser = HenshinParserProvider.getParser(HenshinElementTypes.AttributeCondition_3005, getParserElement(),
+					HenshinVisualIDRegistry.getType(
+							org.eclipse.emf.henshin.diagram.edit.parts.AttributeConditionBodyEditPart.VISUAL_ID));
 		}
 		return parser;
 	}
@@ -358,11 +356,13 @@
 
 				public void run() {
 					if (isActive() && isEditable()) {
-						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
-							Character initialChar = (Character) theRequest.getExtendedData().get(
-									RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
+						if (theRequest.getExtendedData()
+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
+							Character initialChar = (Character) theRequest.getExtendedData()
+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
 							performDirectEdit(initialChar.charValue());
-						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
+						} else if ((theRequest instanceof DirectEditRequest)
+								&& (getEditText().equals(getLabelText()))) {
 							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
 							performDirectEdit(editRequest.getLocation());
 						} else {
@@ -423,8 +423,8 @@
 	protected void refreshFont() {
 		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
 		if (style != null) {
-			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD
-					: SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
+			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(),
+					(style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
 			setFont(fontData);
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionEditPart.java
index 213428b..5f4e22e 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionEditPart.java
@@ -295,8 +295,8 @@
 
 			fConditionNameLabel.setText("none");
 
-			fConditionNameLabel.setBorder(new MarginBorder(getMapMode().DPtoLP(0), getMapMode().DPtoLP(2), getMapMode()
-					.DPtoLP(0), getMapMode().DPtoLP(2)));
+			fConditionNameLabel.setBorder(new MarginBorder(getMapMode().DPtoLP(0), getMapMode().DPtoLP(2),
+					getMapMode().DPtoLP(0), getMapMode().DPtoLP(2)));
 
 			this.add(fConditionNameLabel);
 
@@ -304,8 +304,8 @@
 
 			fConditionBodyLabel.setText("Condition");
 
-			fConditionBodyLabel.setBorder(new MarginBorder(getMapMode().DPtoLP(0), getMapMode().DPtoLP(2), getMapMode()
-					.DPtoLP(0), getMapMode().DPtoLP(2)));
+			fConditionBodyLabel.setBorder(new MarginBorder(getMapMode().DPtoLP(0), getMapMode().DPtoLP(2),
+					getMapMode().DPtoLP(0), getMapMode().DPtoLP(2)));
 
 			this.add(fConditionBodyLabel);
 
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionNameEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionNameEditPart.java
index 1ece8c8..c0cf144 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionNameEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeConditionNameEditPart.java
@@ -256,11 +256,12 @@
 					final EObject element = getParserElement();
 					final IParser parser = getParser();
 					try {
-						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(
-								new RunnableWithResult.Impl<IParserEditStatus>() {
+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()
+								.runExclusive(new RunnableWithResult.Impl<IParserEditStatus>() {
 
 									public void run() {
-										setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
+										setResult(
+												parser.isValidEditString(new EObjectAdapter(element), (String) value));
 									}
 								});
 						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
@@ -297,12 +298,9 @@
 	 */
 	public IParser getParser() {
 		if (parser == null) {
-			parser = HenshinParserProvider
-					.getParser(
-							HenshinElementTypes.AttributeCondition_3005,
-							getParserElement(),
-							HenshinVisualIDRegistry
-									.getType(org.eclipse.emf.henshin.diagram.edit.parts.AttributeConditionNameEditPart.VISUAL_ID));
+			parser = HenshinParserProvider.getParser(HenshinElementTypes.AttributeCondition_3005, getParserElement(),
+					HenshinVisualIDRegistry.getType(
+							org.eclipse.emf.henshin.diagram.edit.parts.AttributeConditionNameEditPart.VISUAL_ID));
 		}
 		return parser;
 	}
@@ -362,11 +360,13 @@
 
 				public void run() {
 					if (isActive() && isEditable()) {
-						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
-							Character initialChar = (Character) theRequest.getExtendedData().get(
-									RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
+						if (theRequest.getExtendedData()
+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
+							Character initialChar = (Character) theRequest.getExtendedData()
+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
 							performDirectEdit(initialChar.charValue());
-						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
+						} else if ((theRequest instanceof DirectEditRequest)
+								&& (getEditText().equals(getLabelText()))) {
 							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
 							performDirectEdit(editRequest.getLocation());
 						} else {
@@ -427,8 +427,8 @@
 	protected void refreshFont() {
 		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
 		if (style != null) {
-			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD
-					: SWT.NORMAL) | SWT.ITALIC);
+			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(),
+					(style.isBold() ? SWT.BOLD : SWT.NORMAL) | SWT.ITALIC);
 			setFont(fontData);
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeEditPart.java
index 577bcf9..d2c39d2 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/AttributeEditPart.java
@@ -281,11 +281,12 @@
 					final EObject element = getParserElement();
 					final IParser parser = getParser();
 					try {
-						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(
-								new RunnableWithResult.Impl<IParserEditStatus>() {
+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()
+								.runExclusive(new RunnableWithResult.Impl<IParserEditStatus>() {
 
 									public void run() {
-										setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
+										setResult(
+												parser.isValidEditString(new EObjectAdapter(element), (String) value));
 									}
 								});
 						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
@@ -384,11 +385,13 @@
 
 				public void run() {
 					if (isActive() && isEditable()) {
-						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
-							Character initialChar = (Character) theRequest.getExtendedData().get(
-									RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
+						if (theRequest.getExtendedData()
+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
+							Character initialChar = (Character) theRequest.getExtendedData()
+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
 							performDirectEdit(initialChar.charValue());
-						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
+						} else if ((theRequest instanceof DirectEditRequest)
+								&& (getEditText().equals(getLabelText()))) {
 							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
 							performDirectEdit(editRequest.getLocation());
 						} else {
@@ -464,8 +467,8 @@
 	protected void refreshFont() {
 		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
 		if (style != null) {
-			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD
-					: SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
+			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(),
+					(style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
 			setFont(fontData);
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/EdgeActionEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/EdgeActionEditPart.java
index cb7551f..a229333 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/EdgeActionEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/EdgeActionEditPart.java
@@ -103,10 +103,8 @@
 	 * @generated
 	 */
 	static {
-		registerSnapBackPosition(
-				HenshinVisualIDRegistry
-						.getType(org.eclipse.emf.henshin.diagram.edit.parts.EdgeActionEditPart.VISUAL_ID),
-				new Point(0, 60));
+		registerSnapBackPosition(HenshinVisualIDRegistry
+				.getType(org.eclipse.emf.henshin.diagram.edit.parts.EdgeActionEditPart.VISUAL_ID), new Point(0, 60));
 	}
 
 	/**
@@ -290,11 +288,12 @@
 					final EObject element = getParserElement();
 					final IParser parser = getParser();
 					try {
-						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(
-								new RunnableWithResult.Impl<IParserEditStatus>() {
+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()
+								.runExclusive(new RunnableWithResult.Impl<IParserEditStatus>() {
 
 									public void run() {
-										setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
+										setResult(
+												parser.isValidEditString(new EObjectAdapter(element), (String) value));
 									}
 								});
 						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
@@ -393,11 +392,13 @@
 
 				public void run() {
 					if (isActive() && isEditable()) {
-						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
-							Character initialChar = (Character) theRequest.getExtendedData().get(
-									RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
+						if (theRequest.getExtendedData()
+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
+							Character initialChar = (Character) theRequest.getExtendedData()
+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
 							performDirectEdit(initialChar.charValue());
-						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
+						} else if ((theRequest instanceof DirectEditRequest)
+								&& (getEditText().equals(getLabelText()))) {
 							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
 							performDirectEdit(editRequest.getLocation());
 						} else {
@@ -458,8 +459,8 @@
 	protected void refreshFont() {
 		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
 		if (style != null) {
-			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD
-					: SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
+			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(),
+					(style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
 			setFont(fontData);
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/EdgeTypeEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/EdgeTypeEditPart.java
index 84b89b5..338f263 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/EdgeTypeEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/EdgeTypeEditPart.java
@@ -274,11 +274,12 @@
 					final EObject element = getParserElement();
 					final IParser parser = getParser();
 					try {
-						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(
-								new RunnableWithResult.Impl<IParserEditStatus>() {
+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()
+								.runExclusive(new RunnableWithResult.Impl<IParserEditStatus>() {
 
 									public void run() {
-										setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
+										setResult(
+												parser.isValidEditString(new EObjectAdapter(element), (String) value));
 									}
 								});
 						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
@@ -377,11 +378,13 @@
 
 				public void run() {
 					if (isActive() && isEditable()) {
-						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
-							Character initialChar = (Character) theRequest.getExtendedData().get(
-									RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
+						if (theRequest.getExtendedData()
+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
+							Character initialChar = (Character) theRequest.getExtendedData()
+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
 							performDirectEdit(initialChar.charValue());
-						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
+						} else if ((theRequest instanceof DirectEditRequest)
+								&& (getEditText().equals(getLabelText()))) {
 							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
 							performDirectEdit(editRequest.getLocation());
 						} else {
@@ -463,8 +466,8 @@
 	protected void refreshFont() {
 		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
 		if (style != null) {
-			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD
-					: SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
+			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(),
+					(style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
 			setFont(fontData);
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/InvocationNameEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/InvocationNameEditPart.java
index 17b924e..a670be2 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/InvocationNameEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/InvocationNameEditPart.java
@@ -278,8 +278,8 @@
 				if (value instanceof String) {
 					final IParser parser = getParser();
 					try {
-						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(
-								new RunnableWithResult.Impl<IParserEditStatus>() {
+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()
+								.runExclusive(new RunnableWithResult.Impl<IParserEditStatus>() {
 
 									public void run() {
 										// We provide an adapter that include the view!!! (as required by the parser)
@@ -383,11 +383,13 @@
 
 				public void run() {
 					if (isActive() && isEditable()) {
-						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
-							Character initialChar = (Character) theRequest.getExtendedData().get(
-									RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
+						if (theRequest.getExtendedData()
+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
+							Character initialChar = (Character) theRequest.getExtendedData()
+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
 							performDirectEdit(initialChar.charValue());
-						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
+						} else if ((theRequest instanceof DirectEditRequest)
+								&& (getEditText().equals(getLabelText()))) {
 							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
 							performDirectEdit(editRequest.getLocation());
 						} else {
@@ -461,8 +463,8 @@
 	protected void refreshFont() {
 		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
 		if (style != null) {
-			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD
-					: SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
+			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(),
+					(style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
 			setFont(fontData);
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/ModuleEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/ModuleEditPart.java
index a812690..6f56d19 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/ModuleEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/ModuleEditPart.java
@@ -54,8 +54,8 @@
 		super.createDefaultEditPolicies();
 		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ModuleItemSemanticEditPolicy());
 		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ModuleCanonicalEditPolicy());
-		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicyWithCustomReparent(
-				HenshinVisualIDRegistry.TYPED_INSTANCE));
+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,
+				new CreationEditPolicyWithCustomReparent(HenshinVisualIDRegistry.TYPED_INSTANCE));
 		// removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.POPUPBAR_ROLE);
 	}
 
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeActionEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeActionEditPart.java
index bc33d1a..ed7a64c 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeActionEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeActionEditPart.java
@@ -272,11 +272,12 @@
 					final EObject element = getParserElement();
 					final IParser parser = getParser();
 					try {
-						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(
-								new RunnableWithResult.Impl<IParserEditStatus>() {
+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()
+								.runExclusive(new RunnableWithResult.Impl<IParserEditStatus>() {
 
 									public void run() {
-										setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
+										setResult(
+												parser.isValidEditString(new EObjectAdapter(element), (String) value));
 									}
 								});
 						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
@@ -375,11 +376,13 @@
 
 				public void run() {
 					if (isActive() && isEditable()) {
-						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
-							Character initialChar = (Character) theRequest.getExtendedData().get(
-									RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
+						if (theRequest.getExtendedData()
+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
+							Character initialChar = (Character) theRequest.getExtendedData()
+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
 							performDirectEdit(initialChar.charValue());
-						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
+						} else if ((theRequest instanceof DirectEditRequest)
+								&& (getEditText().equals(getLabelText()))) {
 							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
 							performDirectEdit(editRequest.getLocation());
 						} else {
@@ -440,8 +443,8 @@
 	protected void refreshFont() {
 		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
 		if (style != null) {
-			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD
-					: SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
+			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(),
+					(style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
 			setFont(fontData);
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeCompartmentEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeCompartmentEditPart.java
index 6da3212..68037af 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeCompartmentEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeCompartmentEditPart.java
@@ -140,8 +140,8 @@
 	protected void createDefaultEditPolicies() {
 		super.createDefaultEditPolicies();
 		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new NodeCompartmentItemSemanticEditPolicy());
-		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicyWithCustomReparent(
-				HenshinVisualIDRegistry.TYPED_INSTANCE));
+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,
+				new CreationEditPolicyWithCustomReparent(HenshinVisualIDRegistry.TYPED_INSTANCE));
 		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy());
 		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new NodeCompartmentCanonicalEditPolicy());
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeEditPart.java
index d190ce4..102ce5d 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeEditPart.java
@@ -221,8 +221,8 @@
 	 * @generated
 	 */
 	protected void createDefaultEditPoliciesGen() {
-		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicyWithCustomReparent(
-				HenshinVisualIDRegistry.TYPED_INSTANCE));
+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,
+				new CreationEditPolicyWithCustomReparent(HenshinVisualIDRegistry.TYPED_INSTANCE));
 		super.createDefaultEditPolicies();
 		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new NodeItemSemanticEditPolicy());
 		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
@@ -467,8 +467,8 @@
 
 			fNodeActionLabel.setText("none");
 
-			fNodeActionLabel.setBorder(new MarginBorder(getMapMode().DPtoLP(0), getMapMode().DPtoLP(2), getMapMode()
-					.DPtoLP(0), getMapMode().DPtoLP(2)));
+			fNodeActionLabel.setBorder(new MarginBorder(getMapMode().DPtoLP(0), getMapMode().DPtoLP(2),
+					getMapMode().DPtoLP(0), getMapMode().DPtoLP(2)));
 
 			this.add(fNodeActionLabel);
 
@@ -476,8 +476,8 @@
 
 			fNodeTypeLabel.setText("Node");
 
-			fNodeTypeLabel.setBorder(new MarginBorder(getMapMode().DPtoLP(0), getMapMode().DPtoLP(2), getMapMode()
-					.DPtoLP(0), getMapMode().DPtoLP(2)));
+			fNodeTypeLabel.setBorder(new MarginBorder(getMapMode().DPtoLP(0), getMapMode().DPtoLP(2),
+					getMapMode().DPtoLP(0), getMapMode().DPtoLP(2)));
 
 			this.add(fNodeTypeLabel);
 
@@ -548,7 +548,8 @@
 
 				// Now draw the shadow:
 				graphics.setForegroundColor(getShadowColor());
-				graphics.drawLine(r.x + SHADOW_WIDTH, r.y + r.height - SHADOW_WIDTH, r.x + SHADOW_WIDTH, r.y + r.height);
+				graphics.drawLine(r.x + SHADOW_WIDTH, r.y + r.height - SHADOW_WIDTH, r.x + SHADOW_WIDTH,
+						r.y + r.height);
 				graphics.drawLine(r.x + r.width - SHADOW_WIDTH, r.y + SHADOW_WIDTH, r.x + r.width, r.y + SHADOW_WIDTH);
 				graphics.drawLine(r.x + SHADOW_WIDTH, r.y + r.height, r.x + r.width, r.y + r.height);
 				graphics.drawLine(r.x + r.width, r.y + SHADOW_WIDTH, r.x + r.width, r.y + r.height);
@@ -564,8 +565,9 @@
 		 */
 		public Color getShadowColor() {
 			Color c = getForegroundColor();
-			return new Color(c.getDevice(), Math.min(255, c.getRed() + ((255 - c.getRed()) / 2)), Math.min(255,
-					c.getGreen() + ((255 - c.getGreen()) / 2)), Math.min(255, c.getBlue() + ((255 - c.getBlue()) / 2)));
+			return new Color(c.getDevice(), Math.min(255, c.getRed() + ((255 - c.getRed()) / 2)),
+					Math.min(255, c.getGreen() + ((255 - c.getGreen()) / 2)),
+					Math.min(255, c.getBlue() + ((255 - c.getBlue()) / 2)));
 		}
 
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeTypeEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeTypeEditPart.java
index 4dccb13..5de353d 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeTypeEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/NodeTypeEditPart.java
@@ -254,11 +254,12 @@
 					final EObject element = getParserElement();
 					final IParser parser = getParser();
 					try {
-						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(
-								new RunnableWithResult.Impl<IParserEditStatus>() {
+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()
+								.runExclusive(new RunnableWithResult.Impl<IParserEditStatus>() {
 
 									public void run() {
-										setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
+										setResult(
+												parser.isValidEditString(new EObjectAdapter(element), (String) value));
 									}
 								});
 						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
@@ -357,11 +358,13 @@
 
 				public void run() {
 					if (isActive() && isEditable()) {
-						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
-							Character initialChar = (Character) theRequest.getExtendedData().get(
-									RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
+						if (theRequest.getExtendedData()
+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
+							Character initialChar = (Character) theRequest.getExtendedData()
+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
 							performDirectEdit(initialChar.charValue());
-						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
+						} else if ((theRequest instanceof DirectEditRequest)
+								&& (getEditText().equals(getLabelText()))) {
 							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
 							performDirectEdit(editRequest.getLocation());
 						} else {
@@ -422,8 +425,8 @@
 	protected void refreshFont() {
 		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
 		if (style != null) {
-			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD
-					: SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
+			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(),
+					(style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
 			setFont(fontData);
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleCompartmentEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleCompartmentEditPart.java
index 9ccfc54..a72a4c0 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleCompartmentEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleCompartmentEditPart.java
@@ -70,8 +70,8 @@
 	protected void createDefaultEditPolicies() {
 		super.createDefaultEditPolicies();
 		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new RuleCompartmentItemSemanticEditPolicy());
-		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicyWithCustomReparent(
-				HenshinVisualIDRegistry.TYPED_INSTANCE));
+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,
+				new CreationEditPolicyWithCustomReparent(HenshinVisualIDRegistry.TYPED_INSTANCE));
 		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy());
 		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new RuleCompartmentCanonicalEditPolicy());
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleEditPart.java
index 712fbb1..61bd6f0 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleEditPart.java
@@ -318,8 +318,8 @@
 			fRuleNameFigure.setText("unnamed");
 			fRuleNameFigure.setMaximumSize(new Dimension(getMapMode().DPtoLP(1000), getMapMode().DPtoLP(20)));
 
-			fRuleNameFigure.setBorder(new MarginBorder(getMapMode().DPtoLP(2), getMapMode().DPtoLP(2), getMapMode()
-					.DPtoLP(0), getMapMode().DPtoLP(2)));
+			fRuleNameFigure.setBorder(new MarginBorder(getMapMode().DPtoLP(2), getMapMode().DPtoLP(2),
+					getMapMode().DPtoLP(0), getMapMode().DPtoLP(2)));
 
 			this.add(fRuleNameFigure);
 
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleNameEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleNameEditPart.java
index 1ad8680..f916a23 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleNameEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/RuleNameEditPart.java
@@ -262,11 +262,12 @@
 					final EObject element = getParserElement();
 					final IParser parser = getParser();
 					try {
-						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(
-								new RunnableWithResult.Impl<IParserEditStatus>() {
+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()
+								.runExclusive(new RunnableWithResult.Impl<IParserEditStatus>() {
 
 									public void run() {
-										setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
+										setResult(
+												parser.isValidEditString(new EObjectAdapter(element), (String) value));
 									}
 								});
 						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
@@ -364,11 +365,13 @@
 
 				public void run() {
 					if (isActive() && isEditable()) {
-						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
-							Character initialChar = (Character) theRequest.getExtendedData().get(
-									RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
+						if (theRequest.getExtendedData()
+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
+							Character initialChar = (Character) theRequest.getExtendedData()
+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
 							performDirectEdit(initialChar.charValue());
-						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
+						} else if ((theRequest instanceof DirectEditRequest)
+								&& (getEditText().equals(getLabelText()))) {
 							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
 							performDirectEdit(editRequest.getLocation());
 						} else {
@@ -442,8 +445,8 @@
 	protected void refreshFont() {
 		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
 		if (style != null) {
-			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD
-					: SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
+			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(),
+					(style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
 			setFont(fontData);
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitCompartmentEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitCompartmentEditPart.java
index dfa0a26..3c00be0 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitCompartmentEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitCompartmentEditPart.java
@@ -69,8 +69,8 @@
 	protected void createDefaultEditPolicies() {
 		super.createDefaultEditPolicies();
 		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new UnitCompartmentItemSemanticEditPolicy());
-		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicyWithCustomReparent(
-				HenshinVisualIDRegistry.TYPED_INSTANCE));
+		installEditPolicy(EditPolicyRoles.CREATION_ROLE,
+				new CreationEditPolicyWithCustomReparent(HenshinVisualIDRegistry.TYPED_INSTANCE));
 		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy());
 		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new UnitCompartmentCanonicalEditPolicy());
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitEditPart.java
index bfc7643..9f08da2 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitEditPart.java
@@ -319,8 +319,8 @@
 			fUnitNameFigure.setText("unnamed");
 			fUnitNameFigure.setMaximumSize(new Dimension(getMapMode().DPtoLP(1000), getMapMode().DPtoLP(20)));
 
-			fUnitNameFigure.setBorder(new MarginBorder(getMapMode().DPtoLP(2), getMapMode().DPtoLP(2), getMapMode()
-					.DPtoLP(0), getMapMode().DPtoLP(2)));
+			fUnitNameFigure.setBorder(new MarginBorder(getMapMode().DPtoLP(2), getMapMode().DPtoLP(2),
+					getMapMode().DPtoLP(0), getMapMode().DPtoLP(2)));
 
 			this.add(fUnitNameFigure);
 
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitNameEditPart.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitNameEditPart.java
index 480ae0c..79c1642 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitNameEditPart.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/parts/UnitNameEditPart.java
@@ -262,11 +262,12 @@
 					final EObject element = getParserElement();
 					final IParser parser = getParser();
 					try {
-						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(
-								new RunnableWithResult.Impl<IParserEditStatus>() {
+						IParserEditStatus valid = (IParserEditStatus) getEditingDomain()
+								.runExclusive(new RunnableWithResult.Impl<IParserEditStatus>() {
 
 									public void run() {
-										setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
+										setResult(
+												parser.isValidEditString(new EObjectAdapter(element), (String) value));
 									}
 								});
 						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
@@ -364,11 +365,13 @@
 
 				public void run() {
 					if (isActive() && isEditable()) {
-						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
-							Character initialChar = (Character) theRequest.getExtendedData().get(
-									RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
+						if (theRequest.getExtendedData()
+								.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
+							Character initialChar = (Character) theRequest.getExtendedData()
+									.get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
 							performDirectEdit(initialChar.charValue());
-						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
+						} else if ((theRequest instanceof DirectEditRequest)
+								&& (getEditText().equals(getLabelText()))) {
 							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
 							performDirectEdit(editRequest.getLocation());
 						} else {
@@ -442,8 +445,8 @@
 	protected void refreshFont() {
 		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
 		if (style != null) {
-			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD
-					: SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
+			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(),
+					(style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
 			setFont(fontData);
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/HenshinBaseItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/HenshinBaseItemSemanticEditPolicy.java
index 091a1ea..6ca038c 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/HenshinBaseItemSemanticEditPolicy.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/HenshinBaseItemSemanticEditPolicy.java
@@ -127,8 +127,8 @@
 	 */
 	private Command getEditHelperCommand(IEditCommandRequest request, Command editPolicyCommand) {
 		if (editPolicyCommand != null) {
-			ICommand command = editPolicyCommand instanceof ICommandProxy ? ((ICommandProxy) editPolicyCommand)
-					.getICommand() : new CommandProxy(editPolicyCommand);
+			ICommand command = editPolicyCommand instanceof ICommandProxy
+					? ((ICommandProxy) editPolicyCommand).getICommand() : new CommandProxy(editPolicyCommand);
 			request.setParameter(GeneratedEditHelperBase.EDIT_POLICY_COMMAND, command);
 		}
 		IElementType requestContextElementType = getContextElementType(request);
@@ -283,7 +283,8 @@
 		assert view.getEAnnotation("Shortcut") == null; //$NON-NLS-1$
 		for (Iterator it = view.getDiagram().getChildren().iterator(); it.hasNext();) {
 			View nextView = (View) it.next();
-			if (nextView.getEAnnotation("Shortcut") == null || !nextView.isSetElement() || nextView.getElement() != view.getElement()) { //$NON-NLS-1$
+			if (nextView.getEAnnotation("Shortcut") == null || !nextView.isSetElement() //$NON-NLS-1$
+					|| nextView.getElement() != view.getElement()) {
 				continue;
 			}
 			cmd.add(new DeleteCommand(getEditingDomain(), nextView));
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/HenshinTextNonResizableEditPolicy.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/HenshinTextNonResizableEditPolicy.java
index fc0cd7c..901f05d 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/HenshinTextNonResizableEditPolicy.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/HenshinTextNonResizableEditPolicy.java
@@ -30,8 +30,8 @@
 /**
  * @generated
  */
-public class HenshinTextNonResizableEditPolicy extends NonResizableEditPolicyEx implements
-		IRefreshableFeedbackEditPolicy {
+public class HenshinTextNonResizableEditPolicy extends NonResizableEditPolicyEx
+		implements IRefreshableFeedbackEditPolicy {
 
 	/**
 	 * @generated
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/ModuleCanonicalEditPolicy.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/ModuleCanonicalEditPolicy.java
index a4ffc08..fde6b6d 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/ModuleCanonicalEditPolicy.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/ModuleCanonicalEditPolicy.java
@@ -171,6 +171,7 @@
 			SetViewMutabilityCommand.makeMutable(new EObjectAdapter(host().getNotationView())).execute();
 			executeCommand(cmd);
 			@SuppressWarnings("unchecked")
+
 			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();
 			createdViews.addAll(nl);
 		}
@@ -182,7 +183,8 @@
 
 		if (createdViews.size() > 1) {
 			// perform a layout of the container
-			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews, host());
+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews,
+					host());
 			executeCommand(new ICommandProxy(layoutCmd));
 		}
 
@@ -274,8 +276,8 @@
 			EObject diagramLinkObject = nextDiagramLink.getElement();
 			EObject diagramLinkSrc = nextDiagramLink.getSource().getElement();
 			EObject diagramLinkDst = nextDiagramLink.getTarget().getElement();
-			for (Iterator<HenshinLinkDescriptor> linkDescriptorsIterator = linkDescriptors.iterator(); linkDescriptorsIterator
-					.hasNext();) {
+			for (Iterator<HenshinLinkDescriptor> linkDescriptorsIterator = linkDescriptors
+					.iterator(); linkDescriptorsIterator.hasNext();) {
 				HenshinLinkDescriptor nextLinkDescriptor = linkDescriptorsIterator.next();
 				if (diagramLinkObject == nextLinkDescriptor.getModelElement()
 						&& diagramLinkSrc == nextLinkDescriptor.getSource()
@@ -385,8 +387,8 @@
 				continue;
 			}
 			CreateConnectionViewRequest.ConnectionViewDescriptor descriptor = new CreateConnectionViewRequest.ConnectionViewDescriptor(
-					nextLinkDescriptor.getSemanticAdapter(), HenshinVisualIDRegistry.getType(nextLinkDescriptor
-							.getVisualID()), ViewUtil.APPEND, false,
+					nextLinkDescriptor.getSemanticAdapter(),
+					HenshinVisualIDRegistry.getType(nextLinkDescriptor.getVisualID()), ViewUtil.APPEND, false,
 					((IGraphicalEditPart) getHost()).getDiagramPreferencesHint());
 			CreateConnectionViewRequest ccr = new CreateConnectionViewRequest(descriptor);
 			ccr.setType(RequestConstants.REQ_CONNECTION_START);
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/NodeCompartmentCanonicalEditPolicy.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/NodeCompartmentCanonicalEditPolicy.java
index 286251f..982e4f5 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/NodeCompartmentCanonicalEditPolicy.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/NodeCompartmentCanonicalEditPolicy.java
@@ -155,6 +155,7 @@
 			SetViewMutabilityCommand.makeMutable(new EObjectAdapter(host().getNotationView())).execute();
 			executeCommand(cmd);
 			@SuppressWarnings("unchecked")
+
 			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();
 			createdViews.addAll(nl);
 		}
@@ -163,7 +164,8 @@
 		}
 		if (createdViews.size() > 1) {
 			// perform a layout of the container
-			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews, host());
+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews,
+					host());
 			executeCommand(new ICommandProxy(layoutCmd));
 		}
 
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/NodeItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/NodeItemSemanticEditPolicy.java
index ee3e9a2..5ad5c77 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/NodeItemSemanticEditPolicy.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/NodeItemSemanticEditPolicy.java
@@ -67,8 +67,8 @@
 		edges.addAll(view.getTargetEdges());
 		for (Edge edge : edges) {
 			if (HenshinVisualIDRegistry.getVisualID(edge) == EdgeEditPart.VISUAL_ID) {
-				composite.add(new EdgeDeleteCommand(getEditingDomain(), (org.eclipse.emf.henshin.model.Edge) edge
-						.getElement()));
+				composite.add(new EdgeDeleteCommand(getEditingDomain(),
+						(org.eclipse.emf.henshin.model.Edge) edge.getElement()));
 				composite.add(new DeleteCommand(getEditingDomain(), edge));
 			}
 		}
@@ -100,8 +100,8 @@
 					org.eclipse.gmf.runtime.notation.Node cnode = (org.eclipse.gmf.runtime.notation.Node) cit.next();
 					switch (HenshinVisualIDRegistry.getVisualID(cnode)) {
 					case AttributeEditPart.VISUAL_ID:
-						cmd.add(new DestroyElementCommand(new DestroyElementRequest(getEditingDomain(), cnode
-								.getElement(), false))); // directlyOwned: true
+						cmd.add(new DestroyElementCommand(
+								new DestroyElementRequest(getEditingDomain(), cnode.getElement(), false))); // directlyOwned: true
 						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 
 						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));
 						break;
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/RuleCompartmentCanonicalEditPolicy.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/RuleCompartmentCanonicalEditPolicy.java
index 2709936..e1f9038 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/RuleCompartmentCanonicalEditPolicy.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/RuleCompartmentCanonicalEditPolicy.java
@@ -181,6 +181,7 @@
 			SetViewMutabilityCommand.makeMutable(new EObjectAdapter(host().getNotationView())).execute();
 			executeCommand(cmd);
 			@SuppressWarnings("unchecked")
+
 			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();
 			createdViews.addAll(nl);
 		}
@@ -189,7 +190,8 @@
 		}
 		if (createdViews.size() > 1) {
 			// perform a layout of the container
-			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews, host());
+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews,
+					host());
 			executeCommand(new ICommandProxy(layoutCmd));
 		}
 
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/RuleItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/RuleItemSemanticEditPolicy.java
index 7d9810d..5902a22 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/RuleItemSemanticEditPolicy.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/RuleItemSemanticEditPolicy.java
@@ -81,14 +81,14 @@
 								continue;
 							}
 						}
-						cmd.add(new DestroyElementCommand(new DestroyElementRequest(getEditingDomain(), cnode
-								.getElement(), false))); // directlyOwned: false
+						cmd.add(new DestroyElementCommand(
+								new DestroyElementRequest(getEditingDomain(), cnode.getElement(), false))); // directlyOwned: false
 						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 
 						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));
 						break;
 					case AttributeConditionEditPart.VISUAL_ID:
-						cmd.add(new DestroyElementCommand(new DestroyElementRequest(getEditingDomain(), cnode
-								.getElement(), false))); // directlyOwned: true
+						cmd.add(new DestroyElementCommand(
+								new DestroyElementRequest(getEditingDomain(), cnode.getElement(), false))); // directlyOwned: true
 						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 
 						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));
 						break;
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/UnitCompartmentCanonicalEditPolicy.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/UnitCompartmentCanonicalEditPolicy.java
index 5fe4a73..fb3c5f9 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/UnitCompartmentCanonicalEditPolicy.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/UnitCompartmentCanonicalEditPolicy.java
@@ -156,6 +156,7 @@
 			SetViewMutabilityCommand.makeMutable(new EObjectAdapter(host().getNotationView())).execute();
 			executeCommand(cmd);
 			@SuppressWarnings("unchecked")
+
 			List<IAdaptable> nl = (List<IAdaptable>) request.getNewObject();
 			createdViews.addAll(nl);
 		}
@@ -164,7 +165,8 @@
 		}
 		if (createdViews.size() > 1) {
 			// perform a layout of the container
-			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews, host());
+			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews,
+					host());
 			executeCommand(new ICommandProxy(layoutCmd));
 		}
 
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/UnitItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/UnitItemSemanticEditPolicy.java
index b2b847c..978794e 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/UnitItemSemanticEditPolicy.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/edit/policies/UnitItemSemanticEditPolicy.java
@@ -61,14 +61,14 @@
 					Node cnode = (Node) cit.next();
 					switch (HenshinVisualIDRegistry.getVisualID(cnode)) {
 					case SymbolEditPart.VISUAL_ID:
-						cmd.add(new DestroyElementCommand(new DestroyElementRequest(getEditingDomain(), cnode
-								.getElement(), false))); // directlyOwned: false
+						cmd.add(new DestroyElementCommand(
+								new DestroyElementRequest(getEditingDomain(), cnode.getElement(), false))); // directlyOwned: false
 						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 
 						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));
 						break;
 					case InvocationEditPart.VISUAL_ID:
-						cmd.add(new DestroyElementCommand(new DestroyElementRequest(getEditingDomain(), cnode
-								.getElement(), false))); // directlyOwned: false
+						cmd.add(new DestroyElementCommand(
+								new DestroyElementRequest(getEditingDomain(), cnode.getElement(), false))); // directlyOwned: false
 						// don't need explicit deletion of cnode as parent's view deletion would clean child views as well 
 						// cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode));
 						break;
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinDomainNavigatorContentProvider.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinDomainNavigatorContentProvider.java
index 13ea22d..610c43f 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinDomainNavigatorContentProvider.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinDomainNavigatorContentProvider.java
@@ -67,8 +67,8 @@
 	 * @generated
 	 */
 	public HenshinDomainNavigatorContentProvider() {
-		myAdapterFctoryContentProvier = new AdapterFactoryContentProvider(HenshinDiagramEditorPlugin.getInstance()
-				.getItemProvidersAdapterFactory());
+		myAdapterFctoryContentProvier = new AdapterFactoryContentProvider(
+				HenshinDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory());
 		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();
 		myEditingDomain = (AdapterFactoryEditingDomain) editingDomain;
 		myEditingDomain.setResourceToReadOnlyMap(new HashMap() {
@@ -185,8 +185,8 @@
 		}
 
 		if (parentElement instanceof HenshinDomainNavigatorItem) {
-			return wrapEObjects(myAdapterFctoryContentProvier.getChildren(((HenshinDomainNavigatorItem) parentElement)
-					.getEObject()), parentElement);
+			return wrapEObjects(myAdapterFctoryContentProvier
+					.getChildren(((HenshinDomainNavigatorItem) parentElement).getEObject()), parentElement);
 		}
 		return EMPTY_ARRAY;
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinDomainNavigatorItem.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinDomainNavigatorItem.java
index 46c29ef..e261926 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinDomainNavigatorItem.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinDomainNavigatorItem.java
@@ -100,9 +100,8 @@
 	 */
 	public boolean equals(Object obj) {
 		if (obj instanceof org.eclipse.emf.henshin.diagram.navigator.HenshinDomainNavigatorItem) {
-			return EcoreUtil.getURI(getEObject()).equals(
-					EcoreUtil.getURI(((org.eclipse.emf.henshin.diagram.navigator.HenshinDomainNavigatorItem) obj)
-							.getEObject()));
+			return EcoreUtil.getURI(getEObject()).equals(EcoreUtil
+					.getURI(((org.eclipse.emf.henshin.diagram.navigator.HenshinDomainNavigatorItem) obj).getEObject()));
 		}
 		return super.equals(obj);
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinNavigatorContentProvider.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinNavigatorContentProvider.java
index 791428c..f74e4fe 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinNavigatorContentProvider.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinNavigatorContentProvider.java
@@ -255,11 +255,11 @@
 			LinkedList<HenshinAbstractNavigatorItem> result = new LinkedList<HenshinAbstractNavigatorItem>();
 			Node sv = (Node) view;
 			HenshinNavigatorGroup incominglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Rule_2001_incominglinks,
-					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Rule_2001_incominglinks, "icons/incomingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			HenshinNavigatorGroup outgoinglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Rule_2001_outgoinglinks,
-					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Rule_2001_outgoinglinks, "icons/outgoingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			Collection<View> connectedViews;
 			connectedViews = getChildrenByType(Collections.singleton(sv),
 					HenshinVisualIDRegistry.getType(RuleCompartmentEditPart.VISUAL_ID));
@@ -289,11 +289,11 @@
 			LinkedList<HenshinAbstractNavigatorItem> result = new LinkedList<HenshinAbstractNavigatorItem>();
 			Node sv = (Node) view;
 			HenshinNavigatorGroup incominglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Unit_2002_incominglinks,
-					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Unit_2002_incominglinks, "icons/incomingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			HenshinNavigatorGroup outgoinglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Unit_2002_outgoinglinks,
-					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Unit_2002_outgoinglinks, "icons/outgoingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			Collection<View> connectedViews;
 			connectedViews = getChildrenByType(Collections.singleton(sv),
 					HenshinVisualIDRegistry.getType(UnitCompartmentEditPart.VISUAL_ID));
@@ -324,11 +324,11 @@
 			LinkedList<HenshinAbstractNavigatorItem> result = new LinkedList<HenshinAbstractNavigatorItem>();
 			Node sv = (Node) view;
 			HenshinNavigatorGroup incominglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Node_3001_incominglinks,
-					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Node_3001_incominglinks, "icons/incomingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			HenshinNavigatorGroup outgoinglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Node_3001_outgoinglinks,
-					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Node_3001_outgoinglinks, "icons/outgoingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			Collection<View> connectedViews;
 			connectedViews = getChildrenByType(Collections.singleton(sv),
 					HenshinVisualIDRegistry.getType(NodeCompartmentEditPart.VISUAL_ID));
@@ -360,11 +360,11 @@
 			LinkedList<HenshinAbstractNavigatorItem> result = new LinkedList<HenshinAbstractNavigatorItem>();
 			Node sv = (Node) view;
 			HenshinNavigatorGroup incominglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Attribute_3002_incominglinks,
-					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Attribute_3002_incominglinks, "icons/incomingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			HenshinNavigatorGroup outgoinglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Attribute_3002_outgoinglinks,
-					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Attribute_3002_outgoinglinks, "icons/outgoingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			Collection<View> connectedViews;
 			connectedViews = getIncomingLinksByType(Collections.singleton(sv),
 					HenshinVisualIDRegistry.getType(LinkEditPart.VISUAL_ID));
@@ -385,11 +385,11 @@
 			LinkedList<HenshinAbstractNavigatorItem> result = new LinkedList<HenshinAbstractNavigatorItem>();
 			Node sv = (Node) view;
 			HenshinNavigatorGroup incominglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Unit_3003_incominglinks,
-					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Unit_3003_incominglinks, "icons/incomingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			HenshinNavigatorGroup outgoinglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Unit_3003_outgoinglinks,
-					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Unit_3003_outgoinglinks, "icons/outgoingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			Collection<View> connectedViews;
 			connectedViews = getIncomingLinksByType(Collections.singleton(sv),
 					HenshinVisualIDRegistry.getType(LinkEditPart.VISUAL_ID));
@@ -410,11 +410,11 @@
 			LinkedList<HenshinAbstractNavigatorItem> result = new LinkedList<HenshinAbstractNavigatorItem>();
 			Node sv = (Node) view;
 			HenshinNavigatorGroup incominglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Node_3004_incominglinks,
-					"icons/incomingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Node_3004_incominglinks, "icons/incomingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			HenshinNavigatorGroup outgoinglinks = new HenshinNavigatorGroup(
-					Messages.NavigatorGroupName_Node_3004_outgoinglinks,
-					"icons/outgoingLinksNavigatorGroup.gif", parentElement); //$NON-NLS-1$
+					Messages.NavigatorGroupName_Node_3004_outgoinglinks, "icons/outgoingLinksNavigatorGroup.gif", //$NON-NLS-1$
+					parentElement);
 			Collection<View> connectedViews;
 			connectedViews = getIncomingLinksByType(Collections.singleton(sv),
 					HenshinVisualIDRegistry.getType(LinkEditPart.VISUAL_ID));
@@ -636,7 +636,8 @@
 	/**
 	 * @generated
 	 */
-	private Collection<HenshinNavigatorItem> createNavigatorItems(Collection<View> views, Object parent, boolean isLeafs) {
+	private Collection<HenshinNavigatorItem> createNavigatorItems(Collection<View> views, Object parent,
+			boolean isLeafs) {
 		ArrayList<HenshinNavigatorItem> result = new ArrayList<HenshinNavigatorItem>(views.size());
 		for (View nextView : views) {
 			result.add(new HenshinNavigatorItem(nextView, parent, isLeafs));
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinNavigatorLabelProvider.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinNavigatorLabelProvider.java
index 20ddceb..13646a3 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinNavigatorLabelProvider.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/navigator/HenshinNavigatorLabelProvider.java
@@ -62,17 +62,17 @@
  * @implements IColorProvider
  */
 @SuppressWarnings("unused")
-public class HenshinNavigatorLabelProvider extends LabelProvider implements ICommonLabelProvider,
-		ITreePathLabelProvider, IColorProvider {
+public class HenshinNavigatorLabelProvider extends LabelProvider
+		implements ICommonLabelProvider, ITreePathLabelProvider, IColorProvider {
 
 	/**
 	 * @generated
 	 */
 	static {
-		HenshinDiagramEditorPlugin.getInstance().getImageRegistry()
-				.put("Navigator?UnknownElement", ImageDescriptor.getMissingImageDescriptor()); //$NON-NLS-1$
-		HenshinDiagramEditorPlugin.getInstance().getImageRegistry()
-				.put("Navigator?ImageNotFound", ImageDescriptor.getMissingImageDescriptor()); //$NON-NLS-1$
+		HenshinDiagramEditorPlugin.getInstance().getImageRegistry().put("Navigator?UnknownElement", //$NON-NLS-1$
+				ImageDescriptor.getMissingImageDescriptor());
+		HenshinDiagramEditorPlugin.getInstance().getImageRegistry().put("Navigator?ImageNotFound", //$NON-NLS-1$
+				ImageDescriptor.getMissingImageDescriptor());
 	}
 
 	/**
@@ -118,31 +118,31 @@
 	public Image getImage(View view) {
 		switch (HenshinVisualIDRegistry.getVisualID(view)) {
 		case ModuleEditPart.VISUAL_ID:
-			return getImage(
-					"Navigator?Diagram?http://www.eclipse.org/emf/2011/Henshin?Module", HenshinElementTypes.Module_1000); //$NON-NLS-1$
+			return getImage("Navigator?Diagram?http://www.eclipse.org/emf/2011/Henshin?Module", //$NON-NLS-1$
+					HenshinElementTypes.Module_1000);
 		case RuleEditPart.VISUAL_ID:
-			return getImage(
-					"Navigator?TopLevelNode?http://www.eclipse.org/emf/2011/Henshin?Rule", HenshinElementTypes.Rule_2001); //$NON-NLS-1$
+			return getImage("Navigator?TopLevelNode?http://www.eclipse.org/emf/2011/Henshin?Rule", //$NON-NLS-1$
+					HenshinElementTypes.Rule_2001);
 		case UnitEditPart.VISUAL_ID:
-			return getImage(
-					"Navigator?TopLevelNode?http://www.eclipse.org/emf/2011/Henshin?Unit", HenshinElementTypes.Unit_2002); //$NON-NLS-1$
+			return getImage("Navigator?TopLevelNode?http://www.eclipse.org/emf/2011/Henshin?Unit", //$NON-NLS-1$
+					HenshinElementTypes.Unit_2002);
 		case NodeEditPart.VISUAL_ID:
-			return getImage(
-					"Navigator?Node?http://www.eclipse.org/emf/2011/Henshin?Node", HenshinElementTypes.Node_3001); //$NON-NLS-1$
+			return getImage("Navigator?Node?http://www.eclipse.org/emf/2011/Henshin?Node", //$NON-NLS-1$
+					HenshinElementTypes.Node_3001);
 		case AttributeEditPart.VISUAL_ID:
-			return getImage(
-					"Navigator?Node?http://www.eclipse.org/emf/2011/Henshin?Attribute", HenshinElementTypes.Attribute_3002); //$NON-NLS-1$
+			return getImage("Navigator?Node?http://www.eclipse.org/emf/2011/Henshin?Attribute", //$NON-NLS-1$
+					HenshinElementTypes.Attribute_3002);
 		case InvocationEditPart.VISUAL_ID:
-			return getImage(
-					"Navigator?Node?http://www.eclipse.org/emf/2011/Henshin?Unit", HenshinElementTypes.Unit_3003); //$NON-NLS-1$
+			return getImage("Navigator?Node?http://www.eclipse.org/emf/2011/Henshin?Unit", //$NON-NLS-1$
+					HenshinElementTypes.Unit_3003);
 		case SymbolEditPart.VISUAL_ID:
 			return getImage("Navigator?Node?SymbolCircleFigure", HenshinElementTypes.Node_3004); //$NON-NLS-1$
 		case AttributeConditionEditPart.VISUAL_ID:
-			return getImage(
-					"Navigator?Node?http://www.eclipse.org/emf/2011/Henshin?AttributeCondition", HenshinElementTypes.AttributeCondition_3005); //$NON-NLS-1$
+			return getImage("Navigator?Node?http://www.eclipse.org/emf/2011/Henshin?AttributeCondition", //$NON-NLS-1$
+					HenshinElementTypes.AttributeCondition_3005);
 		case EdgeEditPart.VISUAL_ID:
-			return getImage(
-					"Navigator?Link?http://www.eclipse.org/emf/2011/Henshin?Edge", HenshinElementTypes.Edge_4001); //$NON-NLS-1$
+			return getImage("Navigator?Link?http://www.eclipse.org/emf/2011/Henshin?Edge", //$NON-NLS-1$
+					HenshinElementTypes.Edge_4001);
 		case LinkEditPart.VISUAL_ID:
 			return getImage("Navigator?Link?LinkFigure", HenshinElementTypes.Link_4002); //$NON-NLS-1$
 		}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/parsers/MessageFormatParser.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/parsers/MessageFormatParser.java
index 4770caf..7a41935 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/parsers/MessageFormatParser.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/parsers/MessageFormatParser.java
@@ -118,8 +118,8 @@
 	 */
 	protected MessageFormat getEditorProcessor() {
 		if (editorProcessor == null) {
-			editorProcessor = new MessageFormat(getEditorPattern() == null ? getDefaultEditablePattern()
-					: getEditorPattern());
+			editorProcessor = new MessageFormat(
+					getEditorPattern() == null ? getDefaultEditablePattern() : getEditorPattern());
 		}
 		return editorProcessor;
 	}
@@ -156,7 +156,8 @@
 	 */
 	protected MessageFormat getEditProcessor() {
 		if (editProcessor == null) {
-			editProcessor = new MessageFormat(getEditPattern() == null ? getDefaultEditablePattern() : getEditPattern());
+			editProcessor = new MessageFormat(
+					getEditPattern() == null ? getDefaultEditablePattern() : getEditPattern());
 		}
 		return editProcessor;
 	}
@@ -177,8 +178,8 @@
 		ParsePosition pos = new ParsePosition(0);
 		Object[] values = getEditProcessor().parse(editString, pos);
 		if (values == null) {
-			return new ParserEditStatus(HenshinDiagramEditorPlugin.ID, IParserEditStatus.UNEDITABLE, NLS.bind(
-					Messages.MessageFormatParser_InvalidInputError, new Integer(pos.getErrorIndex())));
+			return new ParserEditStatus(HenshinDiagramEditorPlugin.ID, IParserEditStatus.UNEDITABLE,
+					NLS.bind(Messages.MessageFormatParser_InvalidInputError, new Integer(pos.getErrorIndex())));
 		}
 		return validateNewValues(values);
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/DiagramEditorContextMenuProvider.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/DiagramEditorContextMenuProvider.java
index d8ce48b..5abaa15 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/DiagramEditorContextMenuProvider.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/DiagramEditorContextMenuProvider.java
@@ -60,12 +60,12 @@
 	public void buildContextMenu(final IMenuManager menu) {
 		getViewer().flush();
 		try {
-			TransactionUtil.getEditingDomain((EObject) getViewer().getContents().getModel()).runExclusive(
-					new Runnable() {
+			TransactionUtil.getEditingDomain((EObject) getViewer().getContents().getModel())
+					.runExclusive(new Runnable() {
 
 						public void run() {
-							ContributionItemService.getInstance().contributeToPopupMenu(
-									DiagramEditorContextMenuProvider.this, part);
+							ContributionItemService.getInstance()
+									.contributeToPopupMenu(DiagramEditorContextMenuProvider.this, part);
 							menu.remove(ActionIds.ACTION_DELETE_FROM_MODEL);
 							menu.appendToGroup("editGroup", deleteAction);
 						}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinCreationWizard.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinCreationWizard.java
index 8c3a9eb..f80c412 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinCreationWizard.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinCreationWizard.java
@@ -114,8 +114,8 @@
 		this.workbench = workbench;
 		this.selection = selection;
 		setWindowTitle(Messages.HenshinCreationWizardTitle);
-		setDefaultPageImageDescriptor(HenshinDiagramEditorPlugin
-				.getBundledImageDescriptor("icons/wizban/NewHenshinWizard.gif")); //$NON-NLS-1$
+		setDefaultPageImageDescriptor(
+				HenshinDiagramEditorPlugin.getBundledImageDescriptor("icons/wizban/NewHenshinWizard.gif")); //$NON-NLS-1$
 		setNeedsProgressMonitor(true);
 	}
 
@@ -148,7 +148,8 @@
 					activated = true;
 					String fileName = diagramModelFilePage.getFileName();
 					fileName = fileName.substring(0, fileName.length() - ".henshin_diagram".length()); //$NON-NLS-1$
-					setFileName(HenshinDiagramEditorUtil.getUniqueFileName(getContainerFullPath(), fileName, "henshin")); //$NON-NLS-1$
+					setFileName(
+							HenshinDiagramEditorUtil.getUniqueFileName(getContainerFullPath(), fileName, "henshin")); //$NON-NLS-1$
 				}
 				super.setVisible(visible);
 			}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditor.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditor.java
index d622f62..4fc9ed7 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditor.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditor.java
@@ -88,7 +88,7 @@
 	 * Background validation scheduler.
 	 */
 	private ValidateScheduler validateScheduler;
-	
+
 	/**
 	 * @generated
 	 */
@@ -144,7 +144,7 @@
 			}
 			MessageDialog.openError(getSite().getShell(), "Error opening Henshin file", message);
 		}
-		
+
 	}
 
 	/*
@@ -152,21 +152,21 @@
 	 * @see org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor#createGraphicalViewer(org.eclipse.swt.widgets.Composite)
 	 */
 	@Override
-    protected void createGraphicalViewer(Composite parent) {
-    	super.createGraphicalViewer(parent);
-    	
+	protected void createGraphicalViewer(Composite parent) {
+		super.createGraphicalViewer(parent);
+
 		// Run background validation:
 		getValidateScheduler().scheduleValidation();
-    	
-    }
-	
+
+	}
+
 	private ValidateScheduler getValidateScheduler() {
 		if (validateScheduler == null) {
 			validateScheduler = new ValidateScheduler(getDiagramEditPart(), 250);
 		}
 		return validateScheduler;
 	}
-	
+
 	/*
 	 * This method takes the currently selected elements and refreshes their views
 	 * by invoking the refresh method of the corresponding canonical edit policies.
@@ -419,5 +419,5 @@
 		getDiagramGraphicalViewer().setContextMenu(provider);
 		getSite().registerContextMenu(ActionIds.DIAGRAM_EDITOR_CONTEXT_MENU, provider, getDiagramGraphicalViewer());
 	}
-	
+
 }
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditorPlugin.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditorPlugin.java
index a69c5b8..9fb4bda 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditorPlugin.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditorPlugin.java
@@ -174,8 +174,8 @@
 	public static ImageDescriptor findImageDescriptor(String path) {
 		final IPath p = new Path(path);
 		if (p.isAbsolute() && p.segmentCount() > 1) {
-			return AbstractUIPlugin.imageDescriptorFromPlugin(p.segment(0), p.removeFirstSegments(1).makeAbsolute()
-					.toString());
+			return AbstractUIPlugin.imageDescriptorFromPlugin(p.segment(0),
+					p.removeFirstSegments(1).makeAbsolute().toString());
 		} else {
 			return getBundledImageDescriptor(p.makeAbsolute().toString());
 		}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditorUtil.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditorUtil.java
index e3e22e0..804aeeb 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditorUtil.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramEditorUtil.java
@@ -100,8 +100,8 @@
 		try {
 			file.setCharset("UTF-8", new NullProgressMonitor()); //$NON-NLS-1$
 		} catch (CoreException e) {
-			HenshinDiagramEditorPlugin.getInstance()
-					.logError("Unable to set charset for file " + file.getFullPath(), e); //$NON-NLS-1$
+			HenshinDiagramEditorPlugin.getInstance().logError("Unable to set charset for file " + file.getFullPath(), //$NON-NLS-1$
+					e);
 		}
 	}
 
@@ -179,21 +179,21 @@
 	}
 
 	/**
-	 * Create a new instance of domain element associated with canvas.
-	 * <!-- begin-user-doc -->
+	* Create a new instance of domain element associated with canvas.
+	* <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
-	 */
+	* @generated
+	*/
 	private static Module createInitialModel() {
 		return HenshinFactory.eINSTANCE.createModule();
 	}
 
 	/**
-	 * Store model element in the resource.
-	 * <!-- begin-user-doc -->
+	* Store model element in the resource.
+	* <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
-	 */
+	* @generated
+	*/
 	private static void attachModelToResource(Module model, Resource resource) {
 		resource.getContents().add(model);
 	}
@@ -213,8 +213,8 @@
 		}
 
 		if (!editParts.isEmpty()) {
-			diagramPart.getDiagramGraphicalViewer().reveal(
-					firstPrimary != null ? firstPrimary : (EditPart) editParts.get(0));
+			diagramPart.getDiagramGraphicalViewer()
+					.reveal(firstPrimary != null ? firstPrimary : (EditPart) editParts.get(0));
 		}
 	}
 
@@ -226,10 +226,6 @@
 		IDiagramGraphicalViewer viewer = (IDiagramGraphicalViewer) diagramPart.getViewer();
 		final int intialNumOfEditParts = editPartCollector.size();
 
-		if (viewer == null) {
-			return -1;
-		}
-		
 		if (element instanceof View) { // support notation element lookup
 			EditPart editPart = (EditPart) viewer.getEditPartRegistry().get(element);
 			if (editPart != null) {
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramUpdater.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramUpdater.java
index 4b18101..c385c9f 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramUpdater.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDiagramUpdater.java
@@ -388,8 +388,8 @@
 	 */
 	public static List<HenshinLinkDescriptor> getNode_3001IncomingLinks(View view) {
 		Node modelElement = (Node) view.getElement();
-		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer.find(view
-				.eResource().getResourceSet().getResources());
+		Map<EObject, Collection<EStructuralFeature.Setting>> crossReferences = EcoreUtil.CrossReferencer
+				.find(view.eResource().getResourceSet().getResources());
 		LinkedList<HenshinLinkDescriptor> result = new LinkedList<HenshinLinkDescriptor>();
 		result.addAll(getIncomingTypeModelFacetLinks_Edge_4001(modelElement, crossReferences));
 		return result;
@@ -529,7 +529,8 @@
 			if (src != source) {
 				continue;
 			}
-			result.add(new HenshinLinkDescriptor(src, dst, link, HenshinElementTypes.Edge_4001, EdgeEditPart.VISUAL_ID));
+			result.add(
+					new HenshinLinkDescriptor(src, dst, link, HenshinElementTypes.Edge_4001, EdgeEditPart.VISUAL_ID));
 		}
 		return result;
 	}
@@ -539,33 +540,37 @@
 	 */
 	public static final DiagramUpdater TYPED_INSTANCE = new DiagramUpdater() {
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public List<HenshinNodeDescriptor> getSemanticChildren(View view) {
 			return HenshinDiagramUpdater.getSemanticChildren(view);
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public List<HenshinLinkDescriptor> getContainedLinks(View view) {
 			return HenshinDiagramUpdater.getContainedLinks(view);
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public List<HenshinLinkDescriptor> getIncomingLinks(View view) {
 			return HenshinDiagramUpdater.getIncomingLinks(view);
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public List<HenshinLinkDescriptor> getOutgoingLinks(View view) {
 			return HenshinDiagramUpdater.getOutgoingLinks(view);
 		}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDocumentProvider.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDocumentProvider.java
index d78fb32..39c76c0 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDocumentProvider.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinDocumentProvider.java
@@ -73,9 +73,10 @@
 	 */
 	protected ElementInfo createElementInfo(Object element) throws CoreException {
 		if (false == element instanceof FileEditorInput && false == element instanceof URIEditorInput) {
-			throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0, NLS.bind(
-					Messages.HenshinDocumentProvider_IncorrectInputError, new Object[] { element,
-							"org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ 
+			throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0,
+					NLS.bind(Messages.HenshinDocumentProvider_IncorrectInputError,
+							new Object[] { element, "org.eclipse.ui.part.FileEditorInput", //$NON-NLS-1$
+									"org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ 
 					null));
 		}
 		IEditorInput editorInput = (IEditorInput) element;
@@ -92,9 +93,10 @@
 	 */
 	protected IDocument createDocument(Object element) throws CoreException {
 		if (false == element instanceof FileEditorInput && false == element instanceof URIEditorInput) {
-			throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0, NLS.bind(
-					Messages.HenshinDocumentProvider_IncorrectInputError, new Object[] { element,
-							"org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ 
+			throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0,
+					NLS.bind(Messages.HenshinDocumentProvider_IncorrectInputError,
+							new Object[] { element, "org.eclipse.ui.part.FileEditorInput", //$NON-NLS-1$
+									"org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ 
 					null));
 		}
 		IDocument document = createEmptyDocument();
@@ -241,9 +243,10 @@
 				throw thrownExcp;
 			}
 		} else {
-			throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0, NLS.bind(
-					Messages.HenshinDocumentProvider_IncorrectInputError, new Object[] { element,
-							"org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ 
+			throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0,
+					NLS.bind(Messages.HenshinDocumentProvider_IncorrectInputError,
+							new Object[] { element, "org.eclipse.ui.part.FileEditorInput", //$NON-NLS-1$
+									"org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ 
 					null));
 		}
 	}
@@ -323,8 +326,8 @@
 				try {
 					updateCache(element);
 				} catch (CoreException ex) {
-					HenshinDiagramEditorPlugin.getInstance()
-							.logError(Messages.HenshinDocumentProvider_isModifiable, ex);
+					HenshinDiagramEditorPlugin.getInstance().logError(Messages.HenshinDocumentProvider_isModifiable,
+							ex);
 					// Error message to log was initially taken from org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.internal.l10n.EditorMessages.StorageDocumentProvider_isModifiable
 				}
 			}
@@ -348,8 +351,8 @@
 				try {
 					updateCache(element);
 				} catch (CoreException ex) {
-					HenshinDiagramEditorPlugin.getInstance()
-							.logError(Messages.HenshinDocumentProvider_isModifiable, ex);
+					HenshinDiagramEditorPlugin.getInstance().logError(Messages.HenshinDocumentProvider_isModifiable,
+							ex);
 					// Error message to log was initially taken from org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.internal.l10n.EditorMessages.StorageDocumentProvider_isModifiable
 				}
 			}
@@ -523,19 +526,19 @@
 		ResourceSetInfo info = getResourceSetInfo(element);
 		if (info != null) {
 			if (!overwrite && !info.isSynchronized()) {
-				throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID,
-						IResourceStatus.OUT_OF_SYNC_LOCAL,
-						Messages.HenshinDocumentProvider_UnsynchronizedFileSaveError, null));
+				throw new CoreException(
+						new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, IResourceStatus.OUT_OF_SYNC_LOCAL,
+								Messages.HenshinDocumentProvider_UnsynchronizedFileSaveError, null));
 			}
 			info.stopResourceListening();
 			fireElementStateChanging(element);
 			try {
-				monitor.beginTask(Messages.HenshinDocumentProvider_SaveDiagramTask, info.getResourceSet()
-						.getResources().size() + 1); //"Saving diagram"
+				monitor.beginTask(Messages.HenshinDocumentProvider_SaveDiagramTask,
+						info.getResourceSet().getResources().size() + 1); //"Saving diagram"
 				for (Iterator<Resource> it = info.getLoadedResourcesIterator(); it.hasNext();) {
 					Resource nextResource = it.next();
-					monitor.setTaskName(NLS.bind(Messages.HenshinDocumentProvider_SaveNextResourceTask,
-							nextResource.getURI()));
+					monitor.setTaskName(
+							NLS.bind(Messages.HenshinDocumentProvider_SaveNextResourceTask, nextResource.getURI()));
 					if (nextResource.isLoaded() && !info.getEditingDomain().isReadOnly(nextResource)) {
 						try {
 							nextResource.save(HenshinDiagramEditorUtil.getSaveOptions());
@@ -566,27 +569,27 @@
 				newResoruceURI = ((URIEditorInput) element).getURI();
 			} else {
 				fireElementStateChangeFailed(element);
-				throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0, NLS.bind(
-						Messages.HenshinDocumentProvider_IncorrectInputError, new Object[] { element,
-								"org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ 
+				throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0,
+						NLS.bind(Messages.HenshinDocumentProvider_IncorrectInputError,
+								new Object[] { element, "org.eclipse.ui.part.FileEditorInput", //$NON-NLS-1$
+										"org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ 
 						null));
 			}
 			if (false == document instanceof IDiagramDocument) {
 				fireElementStateChangeFailed(element);
-				throw new CoreException(
-						new Status(
-								IStatus.ERROR,
-								HenshinDiagramEditorPlugin.ID,
-								0,
-								"Incorrect document used: " + document + " instead of org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument", null)); //$NON-NLS-1$ //$NON-NLS-2$
+				throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0,
+						"Incorrect document used: " + document //$NON-NLS-1$
+								+ " instead of org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument", //$NON-NLS-1$
+						null));
 			}
 			IDiagramDocument diagramDocument = (IDiagramDocument) document;
 			final Resource newResource = diagramDocument.getEditingDomain().getResourceSet()
 					.createResource(newResoruceURI);
 			final Diagram diagramCopy = (Diagram) EcoreUtil.copy(diagramDocument.getDiagram());
 			try {
-				new AbstractTransactionalCommand(diagramDocument.getEditingDomain(), NLS.bind(
-						Messages.HenshinDocumentProvider_SaveAsOperation, diagramCopy.getName()), affectedFiles) {
+				new AbstractTransactionalCommand(diagramDocument.getEditingDomain(),
+						NLS.bind(Messages.HenshinDocumentProvider_SaveAsOperation, diagramCopy.getName()),
+						affectedFiles) {
 					protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info)
 							throws ExecutionException {
 						newResource.getContents().add(diagramCopy);
@@ -596,12 +599,12 @@
 				newResource.save(HenshinDiagramEditorUtil.getSaveOptions());
 			} catch (ExecutionException e) {
 				fireElementStateChangeFailed(element);
-				throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0,
-						e.getLocalizedMessage(), null));
+				throw new CoreException(
+						new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0, e.getLocalizedMessage(), null));
 			} catch (IOException e) {
 				fireElementStateChangeFailed(element);
-				throw new CoreException(new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0,
-						e.getLocalizedMessage(), null));
+				throw new CoreException(
+						new Status(IStatus.ERROR, HenshinDiagramEditorPlugin.ID, 0, e.getLocalizedMessage(), null));
 			}
 			newResource.unload();
 		}
@@ -616,8 +619,8 @@
 			try {
 				file.refreshLocal(IResource.DEPTH_INFINITE, monitor);
 			} catch (CoreException ex) {
-				HenshinDiagramEditorPlugin.getInstance().logError(
-						Messages.HenshinDocumentProvider_handleElementContentChanged, ex);
+				HenshinDiagramEditorPlugin.getInstance()
+						.logError(Messages.HenshinDocumentProvider_handleElementContentChanged, ex);
 				// Error message to log was initially taken from org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.internal.l10n.EditorMessages.FileDocumentProvider_handleElementContentChanged
 			}
 		}
@@ -982,7 +985,7 @@
 					Resource resource = (Resource) notification.getNotifier();
 					if (resource.isLoaded()) {
 						boolean modified = false;
-						for (Iterator/*<org.eclipse.emf.ecore.resource.Resource>*/it = myInfo
+						for (Iterator /*<org.eclipse.emf.ecore.resource.Resource>*/ it = myInfo
 								.getLoadedResourcesIterator(); it.hasNext() && !modified;) {
 							Resource nextResource = (Resource) it.next();
 							if (nextResource.isLoaded()) {
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinNewDiagramFileWizard.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinNewDiagramFileWizard.java
index a3f6bfe..a9de1dd 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinNewDiagramFileWizard.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinNewDiagramFileWizard.java
@@ -61,7 +61,8 @@
 	/**
 	 * @generated
 	 */
-	public HenshinNewDiagramFileWizard(URI domainModelURI, EObject diagramRoot, TransactionalEditingDomain editingDomain) {
+	public HenshinNewDiagramFileWizard(URI domainModelURI, EObject diagramRoot,
+			TransactionalEditingDomain editingDomain) {
 		assert domainModelURI != null : "Domain model uri must be specified"; //$NON-NLS-1$
 		assert diagramRoot != null : "Doagram root element must be specified"; //$NON-NLS-1$
 		assert editingDomain != null : "Editing domain must be specified"; //$NON-NLS-1$
@@ -69,8 +70,8 @@
 		myFileCreationPage = new WizardNewFileCreationPage(Messages.HenshinNewDiagramFileWizard_CreationPageName,
 				StructuredSelection.EMPTY);
 		myFileCreationPage.setTitle(Messages.HenshinNewDiagramFileWizard_CreationPageTitle);
-		myFileCreationPage.setDescription(NLS.bind(Messages.HenshinNewDiagramFileWizard_CreationPageDescription,
-				ModuleEditPart.MODEL_ID));
+		myFileCreationPage.setDescription(
+				NLS.bind(Messages.HenshinNewDiagramFileWizard_CreationPageDescription, ModuleEditPart.MODEL_ID));
 		IPath filePath;
 		String fileName = URI.decode(domainModelURI.trimFileExtension().lastSegment());
 		if (domainModelURI.isPlatformResource()) {
@@ -82,8 +83,8 @@
 			throw new IllegalArgumentException("Unsupported URI: " + domainModelURI); //$NON-NLS-1$
 		}
 		myFileCreationPage.setContainerFullPath(filePath);
-		myFileCreationPage.setFileName(HenshinDiagramEditorUtil
-				.getUniqueFileName(filePath, fileName, "henshin_diagram")); //$NON-NLS-1$
+		myFileCreationPage
+				.setFileName(HenshinDiagramEditorUtil.getUniqueFileName(filePath, fileName, "henshin_diagram")); //$NON-NLS-1$
 
 		diagramRootElementSelectionPage = new DiagramRootElementSelectionPage(
 				Messages.HenshinNewDiagramFileWizard_RootSelectionPageName);
@@ -119,8 +120,8 @@
 
 			protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info)
 					throws ExecutionException {
-				int diagramVID = HenshinVisualIDRegistry.getDiagramVisualID(diagramRootElementSelectionPage
-						.getModelElement());
+				int diagramVID = HenshinVisualIDRegistry
+						.getDiagramVisualID(diagramRootElementSelectionPage.getModelElement());
 				if (diagramVID != ModuleEditPart.VISUAL_ID) {
 					return CommandResult.newErrorCommandResult(Messages.HenshinNewDiagramFileWizard_IncorrectRootError);
 				}
@@ -171,11 +172,11 @@
 				setErrorMessage(Messages.HenshinNewDiagramFileWizard_RootSelectionPageNoSelectionMessage);
 				return false;
 			}
-			boolean result = ViewService.getInstance().provides(
-					new CreateDiagramViewOperation(new EObjectAdapter(getModelElement()), ModuleEditPart.MODEL_ID,
-							HenshinDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT));
-			setErrorMessage(result ? null
-					: Messages.HenshinNewDiagramFileWizard_RootSelectionPageInvalidSelectionMessage);
+			boolean result = ViewService.getInstance()
+					.provides(new CreateDiagramViewOperation(new EObjectAdapter(getModelElement()),
+							ModuleEditPart.MODEL_ID, HenshinDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT));
+			setErrorMessage(
+					result ? null : Messages.HenshinNewDiagramFileWizard_RootSelectionPageInvalidSelectionMessage);
 			return result;
 		}
 	}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinVisualIDRegistry.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinVisualIDRegistry.java
index 6f76849..72728c1 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinVisualIDRegistry.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/HenshinVisualIDRegistry.java
@@ -90,8 +90,8 @@
 			return Integer.parseInt(type);
 		} catch (NumberFormatException e) {
 			if (Boolean.TRUE.toString().equalsIgnoreCase(Platform.getDebugOption(DEBUG_KEY))) {
-				HenshinDiagramEditorPlugin.getInstance().logError(
-						"Unable to parse view type as a visualID number: " + type);
+				HenshinDiagramEditorPlugin.getInstance()
+						.logError("Unable to parse view type as a visualID number: " + type);
 			}
 		}
 		return -1;
@@ -345,51 +345,57 @@
 	 */
 	public static final DiagramStructure TYPED_INSTANCE = new DiagramStructure() {
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public int getVisualID(View view) {
 			return org.eclipse.emf.henshin.diagram.part.HenshinVisualIDRegistry.getVisualID(view);
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public String getModelID(View view) {
 			return org.eclipse.emf.henshin.diagram.part.HenshinVisualIDRegistry.getModelID(view);
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public int getNodeVisualID(View containerView, EObject domainElement) {
 			return org.eclipse.emf.henshin.diagram.part.HenshinVisualIDRegistry.getNodeVisualID(containerView,
 					domainElement);
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public boolean checkNodeVisualID(View containerView, EObject domainElement, int candidate) {
 			return org.eclipse.emf.henshin.diagram.part.HenshinVisualIDRegistry.checkNodeVisualID(containerView,
 					domainElement, candidate);
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public boolean isCompartmentVisualID(int visualID) {
 			return org.eclipse.emf.henshin.diagram.part.HenshinVisualIDRegistry.isCompartmentVisualID(visualID);
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public boolean isSemanticLeafVisualID(int visualID) {
 			return org.eclipse.emf.henshin.diagram.part.HenshinVisualIDRegistry.isSemanticLeafVisualID(visualID);
 		}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/ValidateAction.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/ValidateAction.java
index 66b15ac..de71aa4 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/ValidateAction.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/part/ValidateAction.java
@@ -107,8 +107,8 @@
 	 * @generated
 	 */
 	public static void runNonUIValidation(View view) {
-		DiagramEditPart diagramEditPart = OffscreenEditPartFactory.getInstance().createDiagramEditPart(
-				view.getDiagram());
+		DiagramEditPart diagramEditPart = OffscreenEditPartFactory.getInstance()
+				.createDiagramEditPart(view.getDiagram());
 		runValidation(diagramEditPart, view);
 	}
 
@@ -152,8 +152,8 @@
 		}
 		Diagnostic diagnostic = runEMFValidator(view);
 		createMarkers(target, diagnostic, diagramEditPart);
-		IBatchValidator validator = (IBatchValidator) ModelValidationService.getInstance().newValidator(
-				EvaluationMode.BATCH);
+		IBatchValidator validator = (IBatchValidator) ModelValidationService.getInstance()
+				.newValidator(EvaluationMode.BATCH);
 		validator.setIncludeLiveConstraints(true);
 		if (view.isSetElement() && view.getElement() != null) {
 			IStatus status = validator.validate(view.getElement());
@@ -192,8 +192,8 @@
 		final Diagnostic rootStatus = emfValidationStatus;
 		List allDiagnostics = new ArrayList();
 		HenshinDiagramEditorUtil.LazyElement2ViewMap element2ViewMap = new HenshinDiagramEditorUtil.LazyElement2ViewMap(
-				diagramEditPart.getDiagramView(), collectTargetElements(rootStatus, new HashSet<EObject>(),
-						allDiagnostics));
+				diagramEditPart.getDiagramView(),
+				collectTargetElements(rootStatus, new HashSet<EObject>(), allDiagnostics));
 		for (Iterator it = emfValidationStatus.getChildren().iterator(); it.hasNext();) {
 			Diagnostic nextDiagnostic = (Diagnostic) it.next();
 			List data = nextDiagnostic.getData();
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinElementTypes.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinElementTypes.java
index 367fdd2..a921334 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinElementTypes.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinElementTypes.java
@@ -54,8 +54,8 @@
 	/**
 	 * @generated
 	 */
-	private static DiagramElementTypeImages elementTypeImages = new DiagramElementTypeImages(HenshinDiagramEditorPlugin
-			.getInstance().getItemProvidersAdapterFactory());
+	private static DiagramElementTypeImages elementTypeImages = new DiagramElementTypeImages(
+			HenshinDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory());
 
 	/**
 	 * @generated NOT
@@ -102,7 +102,8 @@
 	/**
 	 * @generated
 	 */
-	public static final IElementType AttributeCondition_3005 = getElementType("org.eclipse.emf.henshin.diagram.AttributeCondition_3005"); //$NON-NLS-1$
+	public static final IElementType AttributeCondition_3005 = getElementType(
+			"org.eclipse.emf.henshin.diagram.AttributeCondition_3005"); //$NON-NLS-1$
 
 	/**
 	 * @generated
@@ -243,25 +244,28 @@
 	public static final DiagramElementTypes TYPED_INSTANCE = new DiagramElementTypes(elementTypeImages) {
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public boolean isKnownElementType(IElementType elementType) {
 			return org.eclipse.emf.henshin.diagram.providers.HenshinElementTypes.isKnownElementType(elementType);
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public IElementType getElementTypeForVisualId(int visualID) {
 			return org.eclipse.emf.henshin.diagram.providers.HenshinElementTypes.getElementType(visualID);
 		}
 
 		/**
-		 * @generated
-		 */
+		* @generated
+		*/
 		@Override
+
 		public ENamedElement getDefiningNamedElement(IAdaptable elementTypeAdapter) {
 			return org.eclipse.emf.henshin.diagram.providers.HenshinElementTypes.getElement(elementTypeAdapter);
 		}
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinModelingAssistantProvider.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinModelingAssistantProvider.java
index e139e37..ce210cb 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinModelingAssistantProvider.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinModelingAssistantProvider.java
@@ -93,8 +93,8 @@
 	 */
 	protected EObject selectElement(EObject[] elements) {
 		Shell shell = Display.getCurrent().getActiveShell();
-		ILabelProvider labelProvider = new AdapterFactoryLabelProvider(HenshinDiagramEditorPlugin.getInstance()
-				.getItemProvidersAdapterFactory());
+		ILabelProvider labelProvider = new AdapterFactoryLabelProvider(
+				HenshinDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory());
 		ElementListSelectionDialog dialog = new ElementListSelectionDialog(shell, labelProvider);
 		dialog.setMessage(Messages.HenshinModelingAssistantProviderMessage);
 		dialog.setTitle(Messages.HenshinModelingAssistantProviderTitle);
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinParserProvider.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinParserProvider.java
index 311c5a8..a7cecc7 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinParserProvider.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinParserProvider.java
@@ -120,8 +120,8 @@
 	private IParser getAttributeConditionConditionText_5007Parser() {
 		if (attributeConditionConditionText_5007Parser == null) {
 			EAttribute[] features = new EAttribute[] { HenshinPackage.eINSTANCE.getAttributeCondition_ConditionText() };
-			EAttribute[] editableFeatures = new EAttribute[] { HenshinPackage.eINSTANCE
-					.getAttributeCondition_ConditionText() };
+			EAttribute[] editableFeatures = new EAttribute[] {
+					HenshinPackage.eINSTANCE.getAttributeCondition_ConditionText() };
 			MessageFormatParser parser = new MessageFormatParser(features, editableFeatures);
 			parser.setViewPattern("{0}"); //$NON-NLS-1$
 			parser.setEditorPattern("{0}"); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinValidationDecoratorProvider.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinValidationDecoratorProvider.java
index bf80282..4c091ef 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinValidationDecoratorProvider.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinValidationDecoratorProvider.java
@@ -73,7 +73,7 @@
 	/**
 	 * @generated
 	 */
-	private static Map/*<String, List<IDecorator>>*/allDecorators = new HashMap();
+	private static Map/*<String, List<IDecorator>>*/ allDecorators = new HashMap();
 
 	/**
 	 * @generated
diff --git a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinViewProvider.java b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinViewProvider.java
index 7b88a92..d068383 100644
--- a/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinViewProvider.java
+++ b/plugins/org.eclipse.emf.henshin.diagram/src/org/eclipse/emf/henshin/diagram/providers/HenshinViewProvider.java
@@ -109,11 +109,11 @@
 	 */
 	protected boolean provides(CreateViewForKindOperation op) {
 		/*
-		 if (op.getViewKind() == Node.class)
-		 return getNodeViewClass(op.getSemanticAdapter(), op.getContainerView(), op.getSemanticHint()) != null;
-		 if (op.getViewKind() == Edge.class)
-		 return getEdgeViewClass(op.getSemanticAdapter(), op.getContainerView(), op.getSemanticHint()) != null;
-		 */
+		    if (op.getViewKind() == Node.class)
+		      return getNodeViewClass(op.getSemanticAdapter(), op.getContainerView(), op.getSemanticHint()) != null;
+		    if (op.getViewKind() == Edge.class)
+		      return getEdgeViewClass(op.getSemanticAdapter(), op.getContainerView(), op.getSemanticHint()) != null;
+		*/
 		return true;
 	}
 
@@ -170,9 +170,8 @@
 				case AttributeEditPart.VISUAL_ID:
 				case AttributeConditionEditPart.VISUAL_ID:
 				case InvocationEditPart.VISUAL_ID:
-					if (domainElement == null
-							|| visualID != HenshinVisualIDRegistry
-									.getNodeVisualID(op.getContainerView(), domainElement)) {
+					if (domainElement == null || visualID != HenshinVisualIDRegistry
+							.getNodeVisualID(op.getContainerView(), domainElement)) {
 						return false; // visual id in semantic hint should match visual id for domain element
 					}
 					break;
@@ -196,7 +195,8 @@
 			return false; // foreign element type
 		}
 		String elementTypeHint = ((IHintedType) elementType).getSemanticHint();
-		if (elementTypeHint == null || (op.getSemanticHint() != null && !elementTypeHint.equals(op.getSemanticHint()))) {
+		if (elementTypeHint == null
+				|| (op.getSemanticHint() != null && !elementTypeHint.equals(op.getSemanticHint()))) {
 			return false; // our hint is visual id and must be specified, and it should be the same as in element type
 		}
 		int visualID = HenshinVisualIDRegistry.getVisualID(elementTypeHint);
@@ -299,8 +299,8 @@
 		ViewUtil.setStructuralFeatureValue(node, NotationPackage.eINSTANCE.getFillStyle_FillColor(),
 				FigureUtilities.colorToInteger(ColorConstants.gray));
 		Node label5001 = createLabel(node, HenshinVisualIDRegistry.getType(RuleNameEditPart.VISUAL_ID));
-		createCompartment(node, HenshinVisualIDRegistry.getType(RuleCompartmentEditPart.VISUAL_ID), false, false,
-				false, false);
+		createCompartment(node, HenshinVisualIDRegistry.getType(RuleCompartmentEditPart.VISUAL_ID), false, false, false,
+				false);
 		return node;
 	}
 
@@ -366,8 +366,8 @@
 		ViewUtil.setStructuralFeatureValue(node, NotationPackage.eINSTANCE.getFillStyle_FillColor(),
 				FigureUtilities.colorToInteger(ColorConstants.gray));
 		Node label5004 = createLabel(node, HenshinVisualIDRegistry.getType(UnitNameEditPart.VISUAL_ID));
-		createCompartment(node, HenshinVisualIDRegistry.getType(UnitCompartmentEditPart.VISUAL_ID), false, false,
-				false, false);
+		createCompartment(node, HenshinVisualIDRegistry.getType(UnitCompartmentEditPart.VISUAL_ID), false, false, false,
+				false);
 		return node;
 	}
 
diff --git a/plugins/org.eclipse.emf.henshin.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.henshin.edit/META-INF/MANIFEST.MF
index c7a8f61..614fe21 100644
--- a/plugins/org.eclipse.emf.henshin.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.henshin.edit/META-INF/MANIFEST.MF
@@ -10,8 +10,8 @@
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.emf.henshin.provider.HenshinEditPlugin$Implementation
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.6.0",
- org.eclipse.emf.edit;visibility:=reexport;bundle-version="2.6.0",
- org.eclipse.emf.henshin.model;bundle-version="0.9.0"
+ org.eclipse.emf.edit;bundle-version="2.6.0";visibility:=reexport,
+ org.eclipse.emf.henshin.model;bundle-version="0.9.0";visibility:=reexport
 Export-Package: org.eclipse.emf.henshin.commands,
  org.eclipse.emf.henshin.provider,
  org.eclipse.emf.henshin.provider.filter,
diff --git a/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateBinaryFormula_left_True.gif b/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateBinaryFormula_left_True.gif
new file mode 100644
index 0000000..bfe2863
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateBinaryFormula_left_True.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateBinaryFormula_right_True.gif b/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateBinaryFormula_right_True.gif
new file mode 100644
index 0000000..bfe2863
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateBinaryFormula_right_True.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateGraph_formula_True.gif b/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateGraph_formula_True.gif
new file mode 100644
index 0000000..9f51228
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateGraph_formula_True.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateUnaryFormula_child_True.gif b/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateUnaryFormula_child_True.gif
new file mode 100644
index 0000000..ffbeece
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.edit/icons/full/ctool16/CreateUnaryFormula_child_True.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.henshin.edit/icons/full/obj16/True.gif b/plugins/org.eclipse.emf.henshin.edit/icons/full/obj16/True.gif
new file mode 100644
index 0000000..45731fe
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.edit/icons/full/obj16/True.gif
Binary files differ
diff --git a/plugins/org.eclipse.emf.henshin.edit/plugin.properties b/plugins/org.eclipse.emf.henshin.edit/plugin.properties
index 608d172..5b1819d 100644
--- a/plugins/org.eclipse.emf.henshin.edit/plugin.properties
+++ b/plugins/org.eclipse.emf.henshin.edit/plugin.properties
@@ -132,3 +132,4 @@
 _UI_ParameterKind_OUT_literal = OUT
 _UI_ParameterKind_INOUT_literal = INOUT
 _UI_ParameterKind_VAR_literal = VAR
+_UI_True_type = True
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AndItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AndItemProvider.java
index 24cd6dc..23c4601 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AndItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AndItemProvider.java
@@ -29,7 +29,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class AndItemProvider extends BinaryFormulaItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class AndItemProvider extends BinaryFormulaItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AnnotationItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AnnotationItemProvider.java
index b22c350..8213348 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AnnotationItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AnnotationItemProvider.java
@@ -30,14 +30,7 @@
  * @generated
  */
 public class AnnotationItemProvider
-	extends ModelElementItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource,
-		IItemColorProvider {
+	extends ModelElementItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AttributeConditionItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AttributeConditionItemProvider.java
index b0140f8..3863abd 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AttributeConditionItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AttributeConditionItemProvider.java
@@ -33,7 +33,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class AttributeConditionItemProvider extends NamedElementItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class AttributeConditionItemProvider extends NamedElementItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AttributeItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AttributeItemProvider.java
index 14241f9..5bb74ee 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AttributeItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/AttributeItemProvider.java
@@ -37,9 +37,7 @@
  * @generated
  */
 @SuppressWarnings("unused")
-public class AttributeItemProvider extends ModelElementItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
-		IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class AttributeItemProvider extends ModelElementItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/BinaryFormulaItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/BinaryFormulaItemProvider.java
index 6bd15ef..89c5fbc 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/BinaryFormulaItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/BinaryFormulaItemProvider.java
@@ -33,9 +33,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class BinaryFormulaItemProvider extends ModelElementItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
-		IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class BinaryFormulaItemProvider extends ModelElementItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
@@ -173,6 +171,11 @@
 
 		newChildDescriptors.add
 			(createChildParameter
+				(HenshinPackage.Literals.BINARY_FORMULA__LEFT,
+				 HenshinFactory.eINSTANCE.createTrue()));
+
+		newChildDescriptors.add
+			(createChildParameter
 				(HenshinPackage.Literals.BINARY_FORMULA__RIGHT,
 				 HenshinFactory.eINSTANCE.createNestedCondition()));
 
@@ -195,6 +198,11 @@
 			(createChildParameter
 				(HenshinPackage.Literals.BINARY_FORMULA__RIGHT,
 				 HenshinFactory.eINSTANCE.createNot()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HenshinPackage.Literals.BINARY_FORMULA__RIGHT,
+				 HenshinFactory.eINSTANCE.createTrue()));
 	}
 	
 	/**
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ConditionalUnitItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ConditionalUnitItemProvider.java
index eb57936..39b9653 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ConditionalUnitItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ConditionalUnitItemProvider.java
@@ -44,7 +44,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class ConditionalUnitItemProvider extends UnitItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class ConditionalUnitItemProvider extends UnitItemProvider {
 	
 	protected GenericReferenceContainerItemProvider ifItemProvider;
 	protected GenericReferenceContainerItemProvider thenItemProvider;
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/EdgeItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/EdgeItemProvider.java
index 418ea7b..056cd03 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/EdgeItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/EdgeItemProvider.java
@@ -44,9 +44,7 @@
  * @generated
  */
 @SuppressWarnings("unused")
-public class EdgeItemProvider extends ModelElementItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
-		IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class EdgeItemProvider extends ModelElementItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc --> 
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/GraphItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/GraphItemProvider.java
index 6d0ae65..190b441 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/GraphItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/GraphItemProvider.java
@@ -41,7 +41,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class GraphItemProvider extends NamedElementItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class GraphItemProvider extends NamedElementItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/HenshinItemProviderAdapterFactory.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/HenshinItemProviderAdapterFactory.java
index bdaa678..8dfa055 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/HenshinItemProviderAdapterFactory.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/HenshinItemProviderAdapterFactory.java
@@ -542,6 +542,29 @@
 	}
 	
 	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.emf.henshin.model.True} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TrueItemProvider trueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.emf.henshin.model.True}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createTrueAdapter() {
+		if (trueItemProvider == null) {
+			trueItemProvider = new TrueItemProvider(this);
+		}
+
+		return trueItemProvider;
+	}
+
+	/**
 	 * This keeps track of the one adapter used for all {@link org.eclipse.emf.henshin.model.Xor} instances.
 	 * <!-- begin-user-doc --> 
 	 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/IndependentUnitItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/IndependentUnitItemProvider.java
index 50edc75..78433f8 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/IndependentUnitItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/IndependentUnitItemProvider.java
@@ -29,7 +29,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class IndependentUnitItemProvider extends MultiUnitItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class IndependentUnitItemProvider extends MultiUnitItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/IteratedUnitItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/IteratedUnitItemProvider.java
index 3e20744..d676cf1 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/IteratedUnitItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/IteratedUnitItemProvider.java
@@ -34,7 +34,7 @@
  * @generated
  */
 public class IteratedUnitItemProvider
-	extends UnaryUnitItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+	extends UnaryUnitItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/LoopUnitItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/LoopUnitItemProvider.java
index db55d67..bd87613 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/LoopUnitItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/LoopUnitItemProvider.java
@@ -29,7 +29,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class LoopUnitItemProvider extends UnaryUnitItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class LoopUnitItemProvider extends UnaryUnitItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/MappingItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/MappingItemProvider.java
index 9bfb015..27bb7cf 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/MappingItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/MappingItemProvider.java
@@ -45,9 +45,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class MappingItemProvider extends ModelElementItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
-		IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class MappingItemProvider extends ModelElementItemProvider {
 	
 	// We need a node listener:
 	protected NodeListener nodeListener = new NodeListener();
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ModuleItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ModuleItemProvider.java
index 5622db9..5c24a84 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ModuleItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ModuleItemProvider.java
@@ -32,7 +32,7 @@
  * @generated
  */
 public class ModuleItemProvider
-	extends NamedElementItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+	extends NamedElementItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/MultiUnitItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/MultiUnitItemProvider.java
index 34b7828..038595f 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/MultiUnitItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/MultiUnitItemProvider.java
@@ -26,7 +26,7 @@
  * @generated
  */
 public class MultiUnitItemProvider
-	extends UnitItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+	extends UnitItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NamedElementItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NamedElementItemProvider.java
index d65ec9e..a47bc31 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NamedElementItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NamedElementItemProvider.java
@@ -33,9 +33,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class NamedElementItemProvider extends ModelElementItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
-		IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class NamedElementItemProvider extends ModelElementItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NestedConditionItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NestedConditionItemProvider.java
index 4e362f9..852ba41 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NestedConditionItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NestedConditionItemProvider.java
@@ -44,9 +44,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class NestedConditionItemProvider extends ModelElementItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
-		IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class NestedConditionItemProvider extends ModelElementItemProvider {
 	
 	/**
 	 * Number of mappings which are shown in an unfold way. 
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NodeItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NodeItemProvider.java
index 326cca7..860d1cd 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NodeItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NodeItemProvider.java
@@ -47,7 +47,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class NodeItemProvider extends NamedElementItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class NodeItemProvider extends NamedElementItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NotItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NotItemProvider.java
index 143be14..5b21996 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NotItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/NotItemProvider.java
@@ -28,7 +28,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class NotItemProvider extends UnaryFormulaItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class NotItemProvider extends UnaryFormulaItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/OrItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/OrItemProvider.java
index 58002e9..dcbe9ca 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/OrItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/OrItemProvider.java
@@ -29,7 +29,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class OrItemProvider extends BinaryFormulaItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class OrItemProvider extends BinaryFormulaItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ParameterItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ParameterItemProvider.java
index e00e622..af15562 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ParameterItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/ParameterItemProvider.java
@@ -39,7 +39,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class ParameterItemProvider extends NamedElementItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class ParameterItemProvider extends NamedElementItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/PriorityUnitItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/PriorityUnitItemProvider.java
index 4f49094..cd9315b 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/PriorityUnitItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/PriorityUnitItemProvider.java
@@ -29,7 +29,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class PriorityUnitItemProvider extends MultiUnitItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class PriorityUnitItemProvider extends MultiUnitItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/RuleItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/RuleItemProvider.java
index af8cb7e..cd567c3 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/RuleItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/RuleItemProvider.java
@@ -52,7 +52,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class RuleItemProvider extends UnitItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class RuleItemProvider extends UnitItemProvider {
 	
 	// Lhs-Rhs mapping container:
 	protected GenericReferenceContainerItemProvider lrMappingContainer;
@@ -344,6 +344,11 @@
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		// super.collectNewChildDescriptors(newChildDescriptors, object);
 
+		newChildDescriptors.add
+		(createChildParameter
+			(HenshinPackage.Literals.MODEL_ELEMENT__ANNOTATIONS,
+			 HenshinFactory.eINSTANCE.createAnnotation()));
+		
  		newChildDescriptors.add(createChildParameter(
 				HenshinPackage.Literals.UNIT__PARAMETERS,
 				HenshinFactory.eINSTANCE.createParameter()));
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/SequentialUnitItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/SequentialUnitItemProvider.java
index 546d190..6998541 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/SequentialUnitItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/SequentialUnitItemProvider.java
@@ -33,7 +33,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class SequentialUnitItemProvider extends MultiUnitItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class SequentialUnitItemProvider extends MultiUnitItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/TrueItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/TrueItemProvider.java
new file mode 100644
index 0000000..450333a
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/TrueItemProvider.java
@@ -0,0 +1,121 @@
+/**
+ */
+package org.eclipse.emf.henshin.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.IItemColorProvider;
+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;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.emf.henshin.model.True} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrueItemProvider 
+	extends HenshinItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource,
+		IItemColorProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TrueItemProvider(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 True.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/True"));
+	}
+
+	/**
+	 * 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_True_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 HenshinEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnaryFormulaItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnaryFormulaItemProvider.java
index 4bf930f..c66e83a 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnaryFormulaItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnaryFormulaItemProvider.java
@@ -33,9 +33,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class UnaryFormulaItemProvider extends ModelElementItemProvider implements
-		IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
-		IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class UnaryFormulaItemProvider extends ModelElementItemProvider {
 	
 	/**
 	 * This constructs an instance from a factory and a notifier.
@@ -168,6 +166,11 @@
 			(createChildParameter
 				(HenshinPackage.Literals.UNARY_FORMULA__CHILD,
 				 HenshinFactory.eINSTANCE.createNot()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(HenshinPackage.Literals.UNARY_FORMULA__CHILD,
+				 HenshinFactory.eINSTANCE.createTrue()));
 	}
 	
 }
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnaryUnitItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnaryUnitItemProvider.java
index 4f650c9..35bf8fe 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnaryUnitItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnaryUnitItemProvider.java
@@ -26,7 +26,7 @@
  * @generated
  */
 public class UnaryUnitItemProvider
-	extends UnitItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+	extends UnitItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnitItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnitItemProvider.java
index eff2d04..bc4dded 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnitItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/UnitItemProvider.java
@@ -42,7 +42,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class UnitItemProvider extends NamedElementItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class UnitItemProvider extends NamedElementItemProvider {
 	
 	/**
 	 * Number of parameters which are shown in an unfold way. Any number above
diff --git a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/XorItemProvider.java b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/XorItemProvider.java
index 47e8fd6..f12ae3c 100644
--- a/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/XorItemProvider.java
+++ b/plugins/org.eclipse.emf.henshin.edit/src/org/eclipse/emf/henshin/provider/XorItemProvider.java
@@ -29,7 +29,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class XorItemProvider extends BinaryFormulaItemProvider implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IItemColorProvider {
+public class XorItemProvider extends BinaryFormulaItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.emf.henshin.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.henshin.editor/META-INF/MANIFEST.MF
index 26d7e9f..3a2447e 100644
--- a/plugins/org.eclipse.emf.henshin.editor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.henshin.editor/META-INF/MANIFEST.MF
@@ -12,9 +12,11 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="3.6.0",
  org.eclipse.core.resources;bundle-version="3.6.0";visibility:=reexport,
  org.eclipse.emf.ecore.xmi;bundle-version="2.5.0";visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
  org.eclipse.emf.ecore.editor;bundle-version="2.6.0",
  org.eclipse.emf.henshin.model;bundle-version="0.9.0",
- org.eclipse.emf.henshin.edit;bundle-version="0.9.0",
+ org.eclipse.emf.henshin.edit;bundle-version="0.9.0";visibility:=reexport,
  org.eclipse.gmf.runtime.common.ui;bundle-version="1.6.0",
  org.eclipse.ui.forms;bundle-version="3.5.2"
 Export-Package: org.eclipse.emf.henshin.editor,
diff --git a/plugins/org.eclipse.emf.henshin.editor/src/org/eclipse/emf/henshin/presentation/HenshinEditor.java b/plugins/org.eclipse.emf.henshin.editor/src/org/eclipse/emf/henshin/presentation/HenshinEditor.java
index f638d9c..207e62d 100644
--- a/plugins/org.eclipse.emf.henshin.editor/src/org/eclipse/emf/henshin/presentation/HenshinEditor.java
+++ b/plugins/org.eclipse.emf.henshin.editor/src/org/eclipse/emf/henshin/presentation/HenshinEditor.java
@@ -469,6 +469,7 @@
 										}
 									}
 								}
+								return false;
 							}
 
 							return true;
diff --git a/plugins/org.eclipse.emf.henshin.interpreter.ui/src/org/eclipse/emf/henshin/interpreter/ui/wizard/ParameterEditTable.java b/plugins/org.eclipse.emf.henshin.interpreter.ui/src/org/eclipse/emf/henshin/interpreter/ui/wizard/ParameterEditTable.java
index a391c59..41531b0 100644
--- a/plugins/org.eclipse.emf.henshin.interpreter.ui/src/org/eclipse/emf/henshin/interpreter/ui/wizard/ParameterEditTable.java
+++ b/plugins/org.eclipse.emf.henshin.interpreter.ui/src/org/eclipse/emf/henshin/interpreter/ui/wizard/ParameterEditTable.java
@@ -189,21 +189,23 @@
 					try {
 						switch (paramCfg.getType()) {
 							case ParameterConfig.STRING:
-								if (! value.toString().trim().equals("") || value.toString().trim().equals("null")) {
+								if (! (value.toString().trim().equals("") || value.toString().trim().equals("null"))) {
 									paramCfg.setValue(value.toString());
 								}
 								else {
 									paramCfg.setValue(null);
-								}	
+								}
+								break;
 							case ParameterConfig.FLOAT:
-								if (! value.toString().trim().equals("") || value.toString().trim().equals("null")) {
+								if (! (value.toString().trim().equals("") || value.toString().trim().equals("null"))) {
 									paramCfg.setValue(Float.parseFloat(value.toString()));
 								}
 								else {
 									paramCfg.setValue(null);
-								}	
+								}
+								break;
 							case ParameterConfig.DOUBLE:
-								if (! value.toString().trim().equals("") || value.toString().trim().equals("null")) {
+								if (! (value.toString().trim().equals("") || value.toString().trim().equals("null"))) {
 									paramCfg.setValue(Double.parseDouble(value.toString()));
 								}
 								else {
@@ -211,7 +213,7 @@
 								}	
 								break;
 							case ParameterConfig.INT:
-								if (! value.toString().trim().equals("") || value.toString().trim().equals("null")) {
+								if (! (value.toString().trim().equals("") || value.toString().trim().equals("null"))) {
 									paramCfg.setValue(Integer.parseInt(value.toString()));
 								}
 								else {
@@ -219,7 +221,7 @@
 								}	
 								break;
 							case ParameterConfig.LONG:
-								if (! value.toString().trim().equals("") || value.toString().trim().equals("null")) {
+								if (! (value.toString().trim().equals("") || value.toString().trim().equals("null"))) {
 									paramCfg.setValue(Long.parseLong(value.toString()));
 								}
 								else {
@@ -227,7 +229,7 @@
 								}	
 								break;
 							case ParameterConfig.BOOLEAN:
-								if (! value.toString().trim().equals("") || value.toString().trim().equals("null")) {
+								if (! (value.toString().trim().equals("") || value.toString().trim().equals("null"))) {
 									paramCfg.setValue((Integer) value > 0 ? true : false);
 								}
 								else {
diff --git a/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/util/InterpreterUtil.java b/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/util/InterpreterUtil.java
index c045d2a..8233e5a 100644
--- a/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/util/InterpreterUtil.java
+++ b/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/util/InterpreterUtil.java
@@ -13,6 +13,7 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.NoSuchElementException;
 import java.util.Set;
 
 import org.eclipse.emf.common.util.EList;
@@ -33,6 +34,7 @@
 import org.eclipse.emf.henshin.interpreter.UnitApplication;
 import org.eclipse.emf.henshin.interpreter.impl.AssignmentImpl;
 import org.eclipse.emf.henshin.interpreter.impl.EGraphImpl;
+import org.eclipse.emf.henshin.interpreter.impl.EngineImpl;
 import org.eclipse.emf.henshin.interpreter.impl.UnitApplicationImpl;
 import org.eclipse.emf.henshin.model.Module;
 import org.eclipse.emf.henshin.model.Node;
@@ -500,5 +502,39 @@
 		}
 		return String.valueOf(object); // object could be null
 	}
+	
+	/**
+	 * Finds a single {@link Match} for a {@link Rule}.
+	 * 
+	 * @param engine The {@link Engine}.
+	 * @param rule Rule to be matched.
+	 * @param graph Target graph.
+	 * @param partialMatch Partial match or <code>null</code>.
+	 * @return a {@link Match} or <code>null</code>.
+	 */
+	public Match findSingleMatch(Engine engine, Rule rule, EGraph graph, Match partialMatch){
+		Match match = null;
+		Iterable<Match> iterable =  engine.findMatches(rule, graph, partialMatch);
+		try {
+			match = iterable.iterator().next();
+		} catch (NoSuchElementException e) {
+			// no matches.
+		}
+		return match;
+	}
+	
+	/**
+	 * Check whether the {@link Rule} is applicable on the {@link EGraph}.
+	 * 
+	 * @param engine The {@link Engine}.
+	 * @param rule Rule to be matched.
+	 * @param graph Target graph.
+	 * @param partialMatch Partial match or <code>null</code>.
+	 * @return <code>true</code> if the <code>rule<code> is applicable on the <code>graph<code>.
+	 */
+	public boolean isApplicable(Engine engine, Rule rule, EGraph graph, Match partialMatch){
+		Match match = this.findSingleMatch(engine, rule, graph, partialMatch);
+		return (match != null) ? true : false;
+	}
 
 }
diff --git a/plugins/org.eclipse.emf.henshin.model/model/henshin.ecore b/plugins/org.eclipse.emf.henshin.model/model/henshin.ecore
index e014206..b53afe0 100644
--- a/plugins/org.eclipse.emf.henshin.model/model/henshin.ecore
+++ b/plugins/org.eclipse.emf.henshin.model/model/henshin.ecore
@@ -328,4 +328,5 @@
     <eLiterals name="INOUT" value="3"/>
     <eLiterals name="VAR" value="4"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="True" eSuperTypes="#//Formula"/>
 </ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Annotation.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Annotation.java
index 69add4d..074f927 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Annotation.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Annotation.java
@@ -17,11 +17,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.Annotation#getKey <em>Key</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Annotation#getValue <em>Value</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getAnnotation()
  * @model
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/BinaryFormula.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/BinaryFormula.java
index 1c0cb73..aead344 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/BinaryFormula.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/BinaryFormula.java
@@ -16,11 +16,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.BinaryFormula#getLeft <em>Left</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.BinaryFormula#getRight <em>Right</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getBinaryFormula()
  * @model abstract="true"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ConditionalUnit.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ConditionalUnit.java
index befcb30..ebb82fc 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ConditionalUnit.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ConditionalUnit.java
@@ -16,12 +16,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.ConditionalUnit#getIf <em>If</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.ConditionalUnit#getThen <em>Then</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.ConditionalUnit#getElse <em>Else</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getConditionalUnit()
  * @model
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Graph.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Graph.java
index ebf9351..511798f 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Graph.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Graph.java
@@ -20,12 +20,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.Graph#getNodes <em>Nodes</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Graph#getEdges <em>Edges</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Graph#getFormula <em>Formula</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getGraph()
  * @model
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/GraphElement.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/GraphElement.java
index 46318af..e082ecf 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/GraphElement.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/GraphElement.java
@@ -18,10 +18,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.GraphElement#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getGraphElement()
  * @model interface="true" abstract="true"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/HenshinFactory.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/HenshinFactory.java
index 6255a8c..c62c702 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/HenshinFactory.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/HenshinFactory.java
@@ -289,6 +289,15 @@
 	Not createNot();
 
 	/**
+	 * Returns a new object of class '<em>True</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>True</em>'.
+	 * @generated
+	 */
+	True createTrue();
+
+	/**
 	 * Returns a new object of class '<em>Xor</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/HenshinPackage.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/HenshinPackage.java
index 0ec47b3..7d19bb9 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/HenshinPackage.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/HenshinPackage.java
@@ -2131,6 +2131,25 @@
 	int NOT_FEATURE_COUNT = UNARY_FORMULA_FEATURE_COUNT + 0;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.emf.henshin.model.impl.TrueImpl <em>True</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.henshin.model.impl.TrueImpl
+	 * @see org.eclipse.emf.henshin.model.impl.HenshinPackageImpl#getTrue()
+	 * @generated
+	 */
+	int TRUE = 31;
+
+	/**
+	 * The number of structural features of the '<em>True</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRUE_FEATURE_COUNT = FORMULA_FEATURE_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.emf.henshin.model.ParameterKind <em>Parameter Kind</em>}' enum.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2138,7 +2157,7 @@
 	 * @see org.eclipse.emf.henshin.model.impl.HenshinPackageImpl#getParameterKind()
 	 * @generated
 	 */
-	int PARAMETER_KIND = 31;
+	int PARAMETER_KIND = 32;
 
 	/**
 	 * The meta object id for the '<em>Action</em>' data type.
@@ -2148,7 +2167,7 @@
 	 * @see org.eclipse.emf.henshin.model.impl.HenshinPackageImpl#getAction()
 	 * @generated
 	 */
-	int ACTION = 32;
+	int ACTION = 33;
 
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.emf.henshin.model.ModelElement <em>Model Element</em>}'.
@@ -3123,6 +3142,16 @@
 	EClass getNot();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.emf.henshin.model.True <em>True</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>True</em>'.
+	 * @see org.eclipse.emf.henshin.model.True
+	 * @generated
+	 */
+	EClass getTrue();
+
+	/**
 	 * Returns the meta object for enum '{@link org.eclipse.emf.henshin.model.ParameterKind <em>Parameter Kind</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -3994,6 +4023,16 @@
 		EClass NOT = eINSTANCE.getNot();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.emf.henshin.model.impl.TrueImpl <em>True</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.emf.henshin.model.impl.TrueImpl
+		 * @see org.eclipse.emf.henshin.model.impl.HenshinPackageImpl#getTrue()
+		 * @generated
+		 */
+		EClass TRUE = eINSTANCE.getTrue();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.emf.henshin.model.ParameterKind <em>Parameter Kind</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Mapping.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Mapping.java
index d3848c8..7fba680 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Mapping.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Mapping.java
@@ -16,11 +16,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.Mapping#getOrigin <em>Origin</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Mapping#getImage <em>Image</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getMapping()
  * @model
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ModelElement.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ModelElement.java
index 49db251..a9efff4 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ModelElement.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ModelElement.java
@@ -20,10 +20,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.ModelElement#getAnnotations <em>Annotations</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getModelElement()
  * @model abstract="true"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/MultiUnit.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/MultiUnit.java
index 192c91f..e38b877 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/MultiUnit.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/MultiUnit.java
@@ -18,10 +18,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.MultiUnit#getSubUnits <em>Sub Units</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getMultiUnit()
  * @model abstract="true"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/NamedElement.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/NamedElement.java
index b06782d..f5ff987 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/NamedElement.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/NamedElement.java
@@ -16,11 +16,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.NamedElement#getName <em>Name</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.NamedElement#getDescription <em>Description</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getNamedElement()
  * @model abstract="true"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/NestedCondition.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/NestedCondition.java
index e2f4e6d..57009ff 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/NestedCondition.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/NestedCondition.java
@@ -18,11 +18,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.NestedCondition#getConclusion <em>Conclusion</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.NestedCondition#getMappings <em>Mappings</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getNestedCondition()
  * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='mappingOriginContainedInParentCondition mappingImageContainedInCurrent'"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Node.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Node.java
index 8af20fb..ebc0136 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Node.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Node.java
@@ -22,6 +22,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.Node#getType <em>Type</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Node#getAttributes <em>Attributes</em>}</li>
@@ -29,7 +30,6 @@
  *   <li>{@link org.eclipse.emf.henshin.model.Node#getIncoming <em>Incoming</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Node#getOutgoing <em>Outgoing</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getNode()
  * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='uniqueAttributeTypes atMostOneContainer NodeDeletionDanglingEdge NodeCreationWithoutContainment'"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Parameter.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Parameter.java
index 96fbbb9..4bd9613 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Parameter.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Parameter.java
@@ -18,15 +18,15 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.Parameter#getUnit <em>Unit</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Parameter#getType <em>Type</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Parameter#getKind <em>Kind</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getParameter()
- * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='nameNotEmpty nameNotTypeName nameNotKindAlias unknownKindDeprecated'"
+ * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='nameNotEmpty nameNotTypeName nameNotKindAlias unknownKindDeprecated nameNotKeyword'"
  * @generated
  */
 public interface Parameter extends NamedElement {
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ParameterMapping.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ParameterMapping.java
index b57adb3..2fc8359 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ParameterMapping.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/ParameterMapping.java
@@ -16,11 +16,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.ParameterMapping#getSource <em>Source</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.ParameterMapping#getTarget <em>Target</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getParameterMapping()
  * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='inParameterMappingIsCausal outParameterMappingIsCausal inoutParameterMappingIsCausal varParameterMappingIsCausal'"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Rule.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Rule.java
index ad45746..860b40b 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Rule.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Rule.java
@@ -20,6 +20,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.Rule#getLhs <em>Lhs</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Rule#getRhs <em>Rhs</em>}</li>
@@ -31,7 +32,6 @@
  *   <li>{@link org.eclipse.emf.henshin.model.Rule#getMultiMappings <em>Multi Mappings</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Rule#getJavaImports <em>Java Imports</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getRule()
  * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='mappingsFromLeft2Right createdNodesNotAbstract createdEdgesNotDerived deletedEdgesNotDerived uniqueNodeNames varParametersOccurOnLeftSide multiRuleParametersSameKind'"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/SequentialUnit.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/SequentialUnit.java
index b60592d..807d394 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/SequentialUnit.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/SequentialUnit.java
@@ -38,11 +38,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.SequentialUnit#isStrict <em>Strict</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.SequentialUnit#isRollback <em>Rollback</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getSequentialUnit()
  * @model
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/True.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/True.java
new file mode 100644
index 0000000..789c129
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/True.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.emf.henshin.model;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>True</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.emf.henshin.model.HenshinPackage#getTrue()
+ * @model
+ * @generated
+ */
+public interface True extends Formula {
+} // True
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/UnaryFormula.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/UnaryFormula.java
index d470892..d71b51d 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/UnaryFormula.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/UnaryFormula.java
@@ -16,10 +16,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.UnaryFormula#getChild <em>Child</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getUnaryFormula()
  * @model abstract="true"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/UnaryUnit.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/UnaryUnit.java
index bd10d68..b49d784 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/UnaryUnit.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/UnaryUnit.java
@@ -16,10 +16,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.UnaryUnit#getSubUnit <em>Sub Unit</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getUnaryUnit()
  * @model abstract="true"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Unit.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Unit.java
index 99f4f83..cb6da87 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Unit.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/Unit.java
@@ -15,12 +15,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.Unit#getParameters <em>Parameters</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Unit#getParameterMappings <em>Parameter Mappings</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.Unit#isActivated <em>Activated</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.emf.henshin.model.HenshinPackage#getUnit()
  * @model abstract="true"
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AndImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AndImpl.java
index 9c816e5..b7bc389 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AndImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AndImpl.java
@@ -18,8 +18,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>And</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AnnotationImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AnnotationImpl.java
index fea6c9a..7b45357 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AnnotationImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AnnotationImpl.java
@@ -24,11 +24,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.AnnotationImpl#getKey <em>Key</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.AnnotationImpl#getValue <em>Value</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AttributeConditionImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AttributeConditionImpl.java
index 1391756..0e5bda8 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AttributeConditionImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AttributeConditionImpl.java
@@ -29,11 +29,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.AttributeConditionImpl#getRule <em>Rule</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.AttributeConditionImpl#getConditionText <em>Condition Text</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AttributeImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AttributeImpl.java
index ff3b136..1affb7b 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AttributeImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/AttributeImpl.java
@@ -37,6 +37,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.AttributeImpl#getAction <em>Action</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.AttributeImpl#getType <em>Type</em>}</li>
@@ -45,7 +46,6 @@
  *   <li>{@link org.eclipse.emf.henshin.model.impl.AttributeImpl#getConstant <em>Constant</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.AttributeImpl#isNull <em>Null</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/BinaryFormulaImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/BinaryFormulaImpl.java
index 05219ac..87712cd 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/BinaryFormulaImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/BinaryFormulaImpl.java
@@ -27,11 +27,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.BinaryFormulaImpl#getLeft <em>Left</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.BinaryFormulaImpl#getRight <em>Right</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ConditionalUnitImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ConditionalUnitImpl.java
index 9aedc04..7d6545b 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ConditionalUnitImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ConditionalUnitImpl.java
@@ -25,12 +25,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.ConditionalUnitImpl#getIf <em>If</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.ConditionalUnitImpl#getThen <em>Then</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.ConditionalUnitImpl#getElse <em>Else</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/EdgeImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/EdgeImpl.java
index 95938e8..b11b790 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/EdgeImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/EdgeImpl.java
@@ -35,6 +35,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.EdgeImpl#getAction <em>Action</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.EdgeImpl#getSource <em>Source</em>}</li>
@@ -44,7 +45,6 @@
  *   <li>{@link org.eclipse.emf.henshin.model.impl.EdgeImpl#getIndex <em>Index</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.EdgeImpl#getIndexConstant <em>Index Constant</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/GraphImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/GraphImpl.java
index 761e4b2..1a9dc5d 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/GraphImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/GraphImpl.java
@@ -43,12 +43,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.GraphImpl#getNodes <em>Nodes</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.GraphImpl#getEdges <em>Edges</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.GraphImpl#getFormula <em>Formula</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/HenshinFactoryImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/HenshinFactoryImpl.java
index 382b364..9020289 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/HenshinFactoryImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/HenshinFactoryImpl.java
@@ -91,6 +91,7 @@
 			case HenshinPackage.OR: return createOr();
 			case HenshinPackage.XOR: return createXor();
 			case HenshinPackage.NOT: return createNot();
+			case HenshinPackage.TRUE: return createTrue();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -426,6 +427,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public True createTrue() {
+		TrueImpl true_ = new TrueImpl();
+		return true_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public ParameterKind createParameterKindFromString(EDataType eDataType, String initialValue) {
 		ParameterKind result = ParameterKind.get(initialValue);
 		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/HenshinPackageImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/HenshinPackageImpl.java
index 63e5739..6aaed73 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/HenshinPackageImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/HenshinPackageImpl.java
@@ -54,6 +54,7 @@
 import org.eclipse.emf.henshin.model.PriorityUnit;
 import org.eclipse.emf.henshin.model.Rule;
 import org.eclipse.emf.henshin.model.SequentialUnit;
+import org.eclipse.emf.henshin.model.True;
 import org.eclipse.emf.henshin.model.UnaryFormula;
 import org.eclipse.emf.henshin.model.UnaryUnit;
 import org.eclipse.emf.henshin.model.Unit;
@@ -286,6 +287,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass trueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EEnum parameterKindEEnum = null;
 
 	/**
@@ -1257,6 +1265,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EClass getTrue() {
+		return trueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EEnum getParameterKind() {
 		return parameterKindEEnum;
 	}
@@ -1460,6 +1477,8 @@
 
 		notEClass = createEClass(NOT);
 
+		trueEClass = createEClass(TRUE);
+
 		// Create enums
 		parameterKindEEnum = createEEnum(PARAMETER_KIND);
 
@@ -1529,6 +1548,7 @@
 		orEClass.getESuperTypes().add(this.getBinaryFormula());
 		xorEClass.getESuperTypes().add(this.getBinaryFormula());
 		notEClass.getESuperTypes().add(this.getUnaryFormula());
+		trueEClass.getESuperTypes().add(this.getFormula());
 
 		// Initialize classes and features; add operations and parameters
 		initEClass(modelElementEClass, ModelElement.class, "ModelElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1560,6 +1580,8 @@
 		op = addEOperation(moduleEClass, this.getModule(), "getSubModule", 0, 1, IS_UNIQUE, IS_ORDERED);
 		addEParameter(op, ecorePackage.getEString(), "name", 0, 1, IS_UNIQUE, IS_ORDERED);
 
+		addEOperation(moduleEClass, this.getRule(), "getAllRules", 0, -1, IS_UNIQUE, IS_ORDERED);
+
 		initEClass(unitEClass, Unit.class, "Unit", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getUnit_Parameters(), this.getParameter(), this.getParameter_Unit(), "parameters", null, 0, -1, Unit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getUnit_ParameterMappings(), this.getParameterMapping(), null, "parameterMappings", null, 0, -1, Unit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -1806,6 +1828,8 @@
 
 		initEClass(notEClass, Not.class, "Not", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
+		initEClass(trueEClass, True.class, "True", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
 		// Initialize enums and add enum literals
 		initEEnum(parameterKindEEnum, ParameterKind.class, "ParameterKind");
 		addEEnumLiteral(parameterKindEEnum, ParameterKind.UNKNOWN);
@@ -1849,7 +1873,7 @@
 		  (parameterEClass, 
 		   source, 
 		   new String[] {
-			 "constraints", "nameNotEmpty nameNotTypeName nameNotKindAlias unknownKindDeprecated"
+			 "constraints", "nameNotEmpty nameNotTypeName nameNotKindAlias unknownKindDeprecated nameNotKeyword"
 		   });	
 		addAnnotation
 		  (parameterMappingEClass, 
@@ -1867,25 +1891,25 @@
 		  (edgeEClass, 
 		   source, 
 		   new String[] {
-			 "constraints", "equalParentGraphs indexValidJavaScript noContainmentCycles EOppositeContainments oppositeEdgeConsidered noParallelEdgesOfSameType containmentEdgeDeletion containmentEdgeCreation"
+			 "constraints", "equalParentGraphs indexValidJavaScript indexAllParametersAreDeclared noContainmentCycles EOppositeContainments oppositeEdgeConsidered noParallelEdgesOfSameType containmentEdgeDeletion containmentEdgeCreation"
 		   });	
 		addAnnotation
 		  (attributeEClass, 
 		   source, 
 		   new String[] {
-			 "constraints", "valueValidJavaScript"
+			 "constraints", "valueValidJavaScript valueAllParametersAreDeclared"
 		   });	
 		addAnnotation
 		  (attributeConditionEClass, 
 		   source, 
 		   new String[] {
-			 "constraints", "conditionTextNotEmpty conditionValidJavaScript"
+			 "constraints", "conditionTextNotEmpty conditionValidJavaScript conditionAllParametersAreDeclared"
 		   });	
 		addAnnotation
 		  (iteratedUnitEClass, 
 		   source, 
 		   new String[] {
-			 "constraints", "iterationsNotEmpty iterationsValidJavaScript"
+			 "constraints", "iterationsNotEmpty iterationsValidJavaScript iterationsAllParametersAreDeclared"
 		   });	
 		addAnnotation
 		  (nestedConditionEClass, 
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/IndependentUnitImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/IndependentUnitImpl.java
index ffbbe87..d4a4d59 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/IndependentUnitImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/IndependentUnitImpl.java
@@ -17,8 +17,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Independent Unit</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/IteratedUnitImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/IteratedUnitImpl.java
index f816595..a0e0737 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/IteratedUnitImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/IteratedUnitImpl.java
@@ -21,10 +21,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.IteratedUnitImpl#getIterations <em>Iterations</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/LoopUnitImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/LoopUnitImpl.java
index 8f6a8b0..6e93e0f 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/LoopUnitImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/LoopUnitImpl.java
@@ -17,8 +17,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Loop Unit</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/MappingImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/MappingImpl.java
index 2c7054d..6214a69 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/MappingImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/MappingImpl.java
@@ -26,11 +26,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.MappingImpl#getOrigin <em>Origin</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.MappingImpl#getImage <em>Image</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ModelElementImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ModelElementImpl.java
index 6471bd2..9ab8207 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ModelElementImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ModelElementImpl.java
@@ -33,10 +33,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.ModelElementImpl#getAnnotations <em>Annotations</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/MultiUnitImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/MultiUnitImpl.java
index 6f7bf22..185f059 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/MultiUnitImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/MultiUnitImpl.java
@@ -24,10 +24,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.MultiUnitImpl#getSubUnits <em>Sub Units</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NamedElementImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NamedElementImpl.java
index f160d97..f087081 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NamedElementImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NamedElementImpl.java
@@ -24,11 +24,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.NamedElementImpl#getName <em>Name</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.NamedElementImpl#getDescription <em>Description</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NestedConditionImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NestedConditionImpl.java
index de7e5c3..e7a89ab 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NestedConditionImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NestedConditionImpl.java
@@ -36,11 +36,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.NestedConditionImpl#getConclusion <em>Conclusion</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.NestedConditionImpl#getMappings <em>Mappings</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NodeImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NodeImpl.java
index f86b442..a172ef8 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NodeImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NodeImpl.java
@@ -42,6 +42,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.NodeImpl#getAction <em>Action</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.NodeImpl#getType <em>Type</em>}</li>
@@ -50,7 +51,6 @@
  *   <li>{@link org.eclipse.emf.henshin.model.impl.NodeImpl#getIncoming <em>Incoming</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.NodeImpl#getOutgoing <em>Outgoing</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NotImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NotImpl.java
index e354322..2cca6ae 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NotImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/NotImpl.java
@@ -18,8 +18,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Not</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/OrImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/OrImpl.java
index 0a60469..38c2897 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/OrImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/OrImpl.java
@@ -18,8 +18,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Or</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ParameterImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ParameterImpl.java
index f2d9578..3cdd2cc 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ParameterImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ParameterImpl.java
@@ -27,12 +27,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.ParameterImpl#getUnit <em>Unit</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.ParameterImpl#getType <em>Type</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.ParameterImpl#getKind <em>Kind</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ParameterMappingImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ParameterMappingImpl.java
index aa61c8b..2d5f17b 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ParameterMappingImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/ParameterMappingImpl.java
@@ -26,11 +26,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.ParameterMappingImpl#getSource <em>Source</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.ParameterMappingImpl#getTarget <em>Target</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/PriorityUnitImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/PriorityUnitImpl.java
index 68594af..8dd185b 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/PriorityUnitImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/PriorityUnitImpl.java
@@ -17,8 +17,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Priority Unit</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/RuleImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/RuleImpl.java
index ccb05c1..71c1df2 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/RuleImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/RuleImpl.java
@@ -57,6 +57,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.RuleImpl#getLhs <em>Lhs</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.RuleImpl#getRhs <em>Rhs</em>}</li>
@@ -68,7 +69,6 @@
  *   <li>{@link org.eclipse.emf.henshin.model.impl.RuleImpl#getMultiMappings <em>Multi Mappings</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.RuleImpl#getJavaImports <em>Java Imports</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/SequentialUnitImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/SequentialUnitImpl.java
index d2fbef9..c3e9431 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/SequentialUnitImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/SequentialUnitImpl.java
@@ -21,11 +21,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.SequentialUnitImpl#isStrict <em>Strict</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.SequentialUnitImpl#isRollback <em>Rollback</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/TrueImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/TrueImpl.java
new file mode 100644
index 0000000..04d54bd
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/TrueImpl.java
@@ -0,0 +1,61 @@
+/**
+ */
+package org.eclipse.emf.henshin.model.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.henshin.model.HenshinPackage;
+import org.eclipse.emf.henshin.model.True;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>True</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TrueImpl extends EObjectImpl implements True {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TrueImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return HenshinPackage.Literals.TRUE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTrue() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isFalse() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+} //TrueImpl
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnaryFormulaImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnaryFormulaImpl.java
index 2fbab0a..f87f3d7 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnaryFormulaImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnaryFormulaImpl.java
@@ -27,10 +27,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.UnaryFormulaImpl#getChild <em>Child</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnaryUnitImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnaryUnitImpl.java
index 40a69c3..90e860d 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnaryUnitImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnaryUnitImpl.java
@@ -26,10 +26,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.UnaryUnitImpl#getSubUnit <em>Sub Unit</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnitImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnitImpl.java
index 3c36328..76d1684 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnitImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/UnitImpl.java
@@ -36,12 +36,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.UnitImpl#getParameters <em>Parameters</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.UnitImpl#getParameterMappings <em>Parameter Mappings</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.model.impl.UnitImpl#isActivated <em>Activated</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/XorImpl.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/XorImpl.java
index a2dd57d..13aaf3c 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/XorImpl.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/impl/XorImpl.java
@@ -18,8 +18,6 @@
  * <!-- begin-user-doc --> 
  * An implementation of the model object '<em><b>Xor</b></em>'. 
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinAdapterFactory.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinAdapterFactory.java
index 8bc6173..1c850c5 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinAdapterFactory.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinAdapterFactory.java
@@ -200,6 +200,10 @@
 				return createNotAdapter();
 			}
 			@Override
+			public Adapter caseTrue(True object) {
+				return createTrueAdapter();
+			}
+			@Override
 			public Adapter defaultCase(EObject object) {
 				return createEObjectAdapter();
 			}
@@ -626,6 +630,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.henshin.model.True <em>True</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.eclipse.emf.henshin.model.True
+	 * @generated
+	 */
+	public Adapter createTrueAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.emf.henshin.model.Xor <em>Xor</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinSwitch.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinSwitch.java
index 1e2c831..1e405f2 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinSwitch.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinSwitch.java
@@ -348,6 +348,13 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case HenshinPackage.TRUE: {
+				True true_ = (True)theEObject;
+				T result = caseTrue(true_);
+				if (result == null) result = caseFormula(true_);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -788,6 +795,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>True</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>True</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTrue(True object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Xor</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinValidator.java b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinValidator.java
index 23f0dc8..2b5c263 100644
--- a/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinValidator.java
+++ b/plugins/org.eclipse.emf.henshin.model/src/org/eclipse/emf/henshin/model/util/HenshinValidator.java
@@ -34,6 +34,7 @@
 import org.eclipse.emf.ecore.EReference;

 import org.eclipse.emf.ecore.util.EObjectValidator;

 import org.eclipse.emf.henshin.HenshinModelPlugin;

+import org.eclipse.emf.henshin.model.*;

 import org.eclipse.emf.henshin.model.Action;

 import org.eclipse.emf.henshin.model.And;

 import org.eclipse.emf.henshin.model.Annotation;

@@ -73,25 +74,21 @@
 /**

  * <!-- begin-user-doc --> The <b>Validator</b> for the Henshin model. <!--

  * end-user-doc -->

- * 

  * @see org.eclipse.emf.henshin.model.HenshinPackage

  * @generated

  */

 public class HenshinValidator extends EObjectValidator {

 

 	/**

-	 * The cached model package <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

+	 * The cached model package

+	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * @generated

 	 */

 	public static final HenshinValidator INSTANCE = new HenshinValidator();

 

 	/**

-	 * A constant for the

-	 * {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of

-	 * diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes}

-	 * from this package. <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

+	 * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package.

+	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * @see org.eclipse.emf.common.util.Diagnostic#getSource()

 	 * @see org.eclipse.emf.common.util.Diagnostic#getCode()

 	 * @generated

@@ -99,19 +96,17 @@
 	public static final String DIAGNOSTIC_SOURCE = "org.eclipse.emf.henshin.model";

 

 	/**

-	 * A constant with a fixed name that can be used as the base value for

-	 * additional hand written constants. <!-- begin-user-doc --> <!--

+	 * A constant with a fixed name that can be used as the base value for additional hand written constants.

+	 * <!-- begin-user-doc --> <!--

 	 * end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0;

 

 	/**

-	 * A constant with a fixed name that can be used as the base value for

-	 * additional hand written constants in a derived class. <!-- begin-user-doc

+	 * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class.

+	 * <!-- begin-user-doc

 	 * --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT;

@@ -141,9 +136,9 @@
 			"typeof", "var", "void", "volatile", "while", "with", "yield" }));

 

 	/**

-	 * Creates an instance of the switch. <!-- begin-user-doc --> <!--

+	 * Creates an instance of the switch.

+	 * <!-- begin-user-doc --> <!--

 	 * end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public HenshinValidator() {

@@ -151,100 +146,100 @@
 	}

 

 	/**

-	 * Returns the package of this validator switch. <!-- begin-user-doc -->

+	 * Returns the package of this validator switch.

+	 * <!-- begin-user-doc -->

 	 * <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	@Override

 	protected EPackage getEPackage() {

-		return HenshinPackage.eINSTANCE;

+	  return HenshinPackage.eINSTANCE;

 	}

 

 	/**

-	 * Calls <code>validateXXX</code> for the corresponding classifier of the

-	 * model. <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

+	 * Calls <code>validateXXX</code> for the corresponding classifier of the model.

+	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * @generated

 	 */

 	@Override

 	protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics,

 			Map<Object, Object> context) {

 		switch (classifierID) {

-		case HenshinPackage.MODEL_ELEMENT:

-			return validateModelElement((ModelElement) value, diagnostics, context);

-		case HenshinPackage.ANNOTATION:

-			return validateAnnotation((Annotation) value, diagnostics, context);

-		case HenshinPackage.NAMED_ELEMENT:

-			return validateNamedElement((NamedElement) value, diagnostics, context);

-		case HenshinPackage.GRAPH_ELEMENT:

-			return validateGraphElement((GraphElement) value, diagnostics, context);

-		case HenshinPackage.MODULE:

-			return validateModule((Module) value, diagnostics, context);

-		case HenshinPackage.UNIT:

-			return validateUnit((Unit) value, diagnostics, context);

-		case HenshinPackage.RULE:

-			return validateRule((Rule) value, diagnostics, context);

-		case HenshinPackage.PARAMETER:

-			return validateParameter((Parameter) value, diagnostics, context);

-		case HenshinPackage.PARAMETER_MAPPING:

-			return validateParameterMapping((ParameterMapping) value, diagnostics, context);

-		case HenshinPackage.GRAPH:

-			return validateGraph((Graph) value, diagnostics, context);

-		case HenshinPackage.NODE:

-			return validateNode((Node) value, diagnostics, context);

-		case HenshinPackage.EDGE:

-			return validateEdge((Edge) value, diagnostics, context);

-		case HenshinPackage.ATTRIBUTE:

-			return validateAttribute((Attribute) value, diagnostics, context);

-		case HenshinPackage.ATTRIBUTE_CONDITION:

-			return validateAttributeCondition((AttributeCondition) value, diagnostics, context);

-		case HenshinPackage.MAPPING:

-			return validateMapping((Mapping) value, diagnostics, context);

-		case HenshinPackage.UNARY_UNIT:

-			return validateUnaryUnit((UnaryUnit) value, diagnostics, context);

-		case HenshinPackage.MULTI_UNIT:

-			return validateMultiUnit((MultiUnit) value, diagnostics, context);

-		case HenshinPackage.INDEPENDENT_UNIT:

-			return validateIndependentUnit((IndependentUnit) value, diagnostics, context);

-		case HenshinPackage.SEQUENTIAL_UNIT:

-			return validateSequentialUnit((SequentialUnit) value, diagnostics, context);

-		case HenshinPackage.CONDITIONAL_UNIT:

-			return validateConditionalUnit((ConditionalUnit) value, diagnostics, context);

-		case HenshinPackage.PRIORITY_UNIT:

-			return validatePriorityUnit((PriorityUnit) value, diagnostics, context);

-		case HenshinPackage.ITERATED_UNIT:

-			return validateIteratedUnit((IteratedUnit) value, diagnostics, context);

-		case HenshinPackage.LOOP_UNIT:

-			return validateLoopUnit((LoopUnit) value, diagnostics, context);

-		case HenshinPackage.FORMULA:

-			return validateFormula((Formula) value, diagnostics, context);

-		case HenshinPackage.NESTED_CONDITION:

-			return validateNestedCondition((NestedCondition) value, diagnostics, context);

-		case HenshinPackage.UNARY_FORMULA:

-			return validateUnaryFormula((UnaryFormula) value, diagnostics, context);

-		case HenshinPackage.BINARY_FORMULA:

-			return validateBinaryFormula((BinaryFormula) value, diagnostics, context);

-		case HenshinPackage.AND:

-			return validateAnd((And) value, diagnostics, context);

-		case HenshinPackage.OR:

-			return validateOr((Or) value, diagnostics, context);

-		case HenshinPackage.XOR:

-			return validateXor((Xor) value, diagnostics, context);

-		case HenshinPackage.NOT:

-			return validateNot((Not) value, diagnostics, context);

-		case HenshinPackage.PARAMETER_KIND:

-			return validateParameterKind((ParameterKind) value, diagnostics, context);

-		case HenshinPackage.ACTION:

-			return validateAction((Action) value, diagnostics, context);

-		default:

-			return true;

+			case HenshinPackage.MODEL_ELEMENT:

+				return validateModelElement((ModelElement)value, diagnostics, context);

+			case HenshinPackage.ANNOTATION:

+				return validateAnnotation((Annotation)value, diagnostics, context);

+			case HenshinPackage.NAMED_ELEMENT:

+				return validateNamedElement((NamedElement)value, diagnostics, context);

+			case HenshinPackage.GRAPH_ELEMENT:

+				return validateGraphElement((GraphElement)value, diagnostics, context);

+			case HenshinPackage.MODULE:

+				return validateModule((Module)value, diagnostics, context);

+			case HenshinPackage.UNIT:

+				return validateUnit((Unit)value, diagnostics, context);

+			case HenshinPackage.RULE:

+				return validateRule((Rule)value, diagnostics, context);

+			case HenshinPackage.PARAMETER:

+				return validateParameter((Parameter)value, diagnostics, context);

+			case HenshinPackage.PARAMETER_MAPPING:

+				return validateParameterMapping((ParameterMapping)value, diagnostics, context);

+			case HenshinPackage.GRAPH:

+				return validateGraph((Graph)value, diagnostics, context);

+			case HenshinPackage.NODE:

+				return validateNode((Node)value, diagnostics, context);

+			case HenshinPackage.EDGE:

+				return validateEdge((Edge)value, diagnostics, context);

+			case HenshinPackage.ATTRIBUTE:

+				return validateAttribute((Attribute)value, diagnostics, context);

+			case HenshinPackage.ATTRIBUTE_CONDITION:

+				return validateAttributeCondition((AttributeCondition)value, diagnostics, context);

+			case HenshinPackage.MAPPING:

+				return validateMapping((Mapping)value, diagnostics, context);

+			case HenshinPackage.UNARY_UNIT:

+				return validateUnaryUnit((UnaryUnit)value, diagnostics, context);

+			case HenshinPackage.MULTI_UNIT:

+				return validateMultiUnit((MultiUnit)value, diagnostics, context);

+			case HenshinPackage.INDEPENDENT_UNIT:

+				return validateIndependentUnit((IndependentUnit)value, diagnostics, context);

+			case HenshinPackage.SEQUENTIAL_UNIT:

+				return validateSequentialUnit((SequentialUnit)value, diagnostics, context);

+			case HenshinPackage.CONDITIONAL_UNIT:

+				return validateConditionalUnit((ConditionalUnit)value, diagnostics, context);

+			case HenshinPackage.PRIORITY_UNIT:

+				return validatePriorityUnit((PriorityUnit)value, diagnostics, context);

+			case HenshinPackage.ITERATED_UNIT:

+				return validateIteratedUnit((IteratedUnit)value, diagnostics, context);

+			case HenshinPackage.LOOP_UNIT:

+				return validateLoopUnit((LoopUnit)value, diagnostics, context);

+			case HenshinPackage.FORMULA:

+				return validateFormula((Formula)value, diagnostics, context);

+			case HenshinPackage.NESTED_CONDITION:

+				return validateNestedCondition((NestedCondition)value, diagnostics, context);

+			case HenshinPackage.UNARY_FORMULA:

+				return validateUnaryFormula((UnaryFormula)value, diagnostics, context);

+			case HenshinPackage.BINARY_FORMULA:

+				return validateBinaryFormula((BinaryFormula)value, diagnostics, context);

+			case HenshinPackage.AND:

+				return validateAnd((And)value, diagnostics, context);

+			case HenshinPackage.OR:

+				return validateOr((Or)value, diagnostics, context);

+			case HenshinPackage.XOR:

+				return validateXor((Xor)value, diagnostics, context);

+			case HenshinPackage.NOT:

+				return validateNot((Not)value, diagnostics, context);

+			case HenshinPackage.TRUE:

+				return validateTrue((True)value, diagnostics, context);

+			case HenshinPackage.PARAMETER_KIND:

+				return validateParameterKind((ParameterKind)value, diagnostics, context);

+			case HenshinPackage.ACTION:

+				return validateAction((Action)value, diagnostics, context);

+			default:

+				return true;

 		}

 	}

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateModelElement(ModelElement modelElement, DiagnosticChain diagnostics,

@@ -254,7 +249,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateAnnotation(Annotation annotation, DiagnosticChain diagnostics, Map<Object, Object> context) {

@@ -263,7 +257,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateNamedElement(NamedElement namedElement, DiagnosticChain diagnostics,

@@ -273,47 +266,28 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateRule(Rule rule, DiagnosticChain diagnostics, Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(rule, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(rule, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_nameNotEmpty(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterNamesUnique(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterMappingsPointToDirectSubUnit(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateRule_mappingsFromLeft2Right(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateRule_createdNodesNotAbstract(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateRule_createdEdgesNotDerived(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateRule_deletedEdgesNotDerived(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateRule_uniqueNodeNames(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateRule_varParametersOccurOnLeftSide(rule, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateRule_multiRuleParametersSameKind(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_nameNotEmpty(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterNamesUnique(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterMappingsPointToDirectSubUnit(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validateRule_mappingsFromLeft2Right(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validateRule_createdNodesNotAbstract(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validateRule_createdEdgesNotDerived(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validateRule_deletedEdgesNotDerived(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validateRule_uniqueNodeNames(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validateRule_varParametersOccurOnLeftSide(rule, diagnostics, context);

+		if (result || diagnostics != null) result &= validateRule_multiRuleParametersSameKind(rule, diagnostics, context);

 		return result;

 	}

 

@@ -718,35 +692,22 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateAttributeCondition(AttributeCondition attributeCondition, DiagnosticChain diagnostics,

 			Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(attributeCondition, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(attributeCondition, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(attributeCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(attributeCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(attributeCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(attributeCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(attributeCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(attributeCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(attributeCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(attributeCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateAttributeCondition_conditionTextNotEmpty(attributeCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateAttributeCondition_conditionValidJavaScript(attributeCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateAttributeCondition_conditionAllParametersAreDeclared(attributeCondition, diagnostics,

-					context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(attributeCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(attributeCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(attributeCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(attributeCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(attributeCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(attributeCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(attributeCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validateAttributeCondition_conditionTextNotEmpty(attributeCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validateAttributeCondition_conditionValidJavaScript(attributeCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validateAttributeCondition_conditionAllParametersAreDeclared(attributeCondition, diagnostics, context);

 		return result;

 	}

 

@@ -864,37 +825,23 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateParameter(Parameter parameter, DiagnosticChain diagnostics, Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(parameter, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(parameter, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateParameter_nameNotEmpty(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateParameter_nameNotTypeName(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateParameter_nameNotKindAlias(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateParameter_unknownKindDeprecated(parameter, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateParameter_nameNotKeyword(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validateParameter_nameNotEmpty(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validateParameter_nameNotTypeName(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validateParameter_nameNotKindAlias(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validateParameter_unknownKindDeprecated(parameter, diagnostics, context);

+		if (result || diagnostics != null) result &= validateParameter_nameNotKeyword(parameter, diagnostics, context);

 		return result;

 	}

 

@@ -1013,7 +960,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateGraph(Graph graph, DiagnosticChain diagnostics, Map<Object, Object> context) {

@@ -1022,7 +968,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateGraphElement(GraphElement graphElement, DiagnosticChain diagnostics,

@@ -1032,7 +977,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateModule(Module module, DiagnosticChain diagnostics, Map<Object, Object> context) {

@@ -1041,33 +985,21 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateUnit(Unit unit, DiagnosticChain diagnostics, Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(unit, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(unit, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(unit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(unit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(unit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(unit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(unit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(unit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(unit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(unit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_nameNotEmpty(unit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterNamesUnique(unit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterMappingsPointToDirectSubUnit(unit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(unit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(unit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(unit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(unit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(unit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(unit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(unit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_nameNotEmpty(unit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterNamesUnique(unit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterMappingsPointToDirectSubUnit(unit, diagnostics, context);

 		return result;

 	}

 

@@ -1142,7 +1074,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateMapping(Mapping mapping, DiagnosticChain diagnostics, Map<Object, Object> context) {

@@ -1151,35 +1082,22 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateNode(Node node, DiagnosticChain diagnostics, Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(node, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(node, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateNode_uniqueAttributeTypes(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateNode_atMostOneContainer(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateNode_NodeDeletionDanglingEdge(node, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateNode_NodeCreationWithoutContainment(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validateNode_uniqueAttributeTypes(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validateNode_atMostOneContainer(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validateNode_NodeDeletionDanglingEdge(node, diagnostics, context);

+		if (result || diagnostics != null) result &= validateNode_NodeCreationWithoutContainment(node, diagnostics, context);

 		return result;

 	}

 

@@ -1318,31 +1236,20 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateAttribute(Attribute attribute, DiagnosticChain diagnostics, Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(attribute, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(attribute, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(attribute, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(attribute, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(attribute, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(attribute, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(attribute, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(attribute, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(attribute, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(attribute, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateAttribute_valueValidJavaScript(attribute, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateAttribute_valueAllParametersAreDeclared(attribute, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(attribute, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(attribute, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(attribute, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(attribute, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(attribute, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(attribute, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(attribute, diagnostics, context);

+		if (result || diagnostics != null) result &= validateAttribute_valueValidJavaScript(attribute, diagnostics, context);

+		if (result || diagnostics != null) result &= validateAttribute_valueAllParametersAreDeclared(attribute, diagnostics, context);

 		return result;

 	}

 

@@ -1471,45 +1378,27 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateEdge(Edge edge, DiagnosticChain diagnostics, Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(edge, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(edge, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateEdge_equalParentGraphs(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateEdge_indexValidJavaScript(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateEdge_indexAllParametersAreDeclared(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateEdge_noContainmentCycles(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateEdge_EOppositeContainments(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateEdge_oppositeEdgeConsidered(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateEdge_noParallelEdgesOfSameType(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateEdge_containmentEdgeDeletion(edge, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateEdge_containmentEdgeCreation(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validateEdge_equalParentGraphs(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validateEdge_indexValidJavaScript(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validateEdge_indexAllParametersAreDeclared(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validateEdge_noContainmentCycles(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validateEdge_EOppositeContainments(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validateEdge_oppositeEdgeConsidered(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validateEdge_noParallelEdgesOfSameType(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validateEdge_containmentEdgeDeletion(edge, diagnostics, context);

+		if (result || diagnostics != null) result &= validateEdge_containmentEdgeCreation(edge, diagnostics, context);

 		return result;

 	}

 

@@ -1630,236 +1519,149 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateUnaryUnit(UnaryUnit unaryUnit, DiagnosticChain diagnostics, Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(unaryUnit, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(unaryUnit, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(unaryUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(unaryUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(unaryUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(unaryUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(unaryUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(unaryUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(unaryUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(unaryUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_nameNotEmpty(unaryUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterNamesUnique(unaryUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterMappingsPointToDirectSubUnit(unaryUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(unaryUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(unaryUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(unaryUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(unaryUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(unaryUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(unaryUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(unaryUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_nameNotEmpty(unaryUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterNamesUnique(unaryUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterMappingsPointToDirectSubUnit(unaryUnit, diagnostics, context);

 		return result;

 	}

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateMultiUnit(MultiUnit multiUnit, DiagnosticChain diagnostics, Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(multiUnit, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(multiUnit, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(multiUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(multiUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(multiUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(multiUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(multiUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(multiUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(multiUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(multiUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_nameNotEmpty(multiUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterNamesUnique(multiUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterMappingsPointToDirectSubUnit(multiUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(multiUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(multiUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(multiUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(multiUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(multiUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(multiUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(multiUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_nameNotEmpty(multiUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterNamesUnique(multiUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterMappingsPointToDirectSubUnit(multiUnit, diagnostics, context);

 		return result;

 	}

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateIndependentUnit(IndependentUnit independentUnit, DiagnosticChain diagnostics,

 			Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(independentUnit, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(independentUnit, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(independentUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(independentUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(independentUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(independentUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(independentUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(independentUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(independentUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(independentUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_nameNotEmpty(independentUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterNamesUnique(independentUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterMappingsPointToDirectSubUnit(independentUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(independentUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(independentUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(independentUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(independentUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(independentUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(independentUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(independentUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_nameNotEmpty(independentUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterNamesUnique(independentUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterMappingsPointToDirectSubUnit(independentUnit, diagnostics, context);

 		return result;

 	}

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateSequentialUnit(SequentialUnit sequentialUnit, DiagnosticChain diagnostics,

 			Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(sequentialUnit, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(sequentialUnit, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(sequentialUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(sequentialUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(sequentialUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(sequentialUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(sequentialUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(sequentialUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(sequentialUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(sequentialUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_nameNotEmpty(sequentialUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterNamesUnique(sequentialUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterMappingsPointToDirectSubUnit(sequentialUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(sequentialUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(sequentialUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(sequentialUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(sequentialUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(sequentialUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(sequentialUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(sequentialUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_nameNotEmpty(sequentialUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterNamesUnique(sequentialUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterMappingsPointToDirectSubUnit(sequentialUnit, diagnostics, context);

 		return result;

 	}

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateConditionalUnit(ConditionalUnit conditionalUnit, DiagnosticChain diagnostics,

 			Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(conditionalUnit, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(conditionalUnit, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(conditionalUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(conditionalUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(conditionalUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(conditionalUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(conditionalUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(conditionalUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(conditionalUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(conditionalUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_nameNotEmpty(conditionalUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterNamesUnique(conditionalUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterMappingsPointToDirectSubUnit(conditionalUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(conditionalUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(conditionalUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(conditionalUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(conditionalUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(conditionalUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(conditionalUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(conditionalUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_nameNotEmpty(conditionalUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterNamesUnique(conditionalUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterMappingsPointToDirectSubUnit(conditionalUnit, diagnostics, context);

 		return result;

 	}

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validatePriorityUnit(PriorityUnit priorityUnit, DiagnosticChain diagnostics,

 			Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(priorityUnit, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(priorityUnit, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(priorityUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(priorityUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(priorityUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(priorityUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(priorityUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(priorityUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(priorityUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(priorityUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_nameNotEmpty(priorityUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterNamesUnique(priorityUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterMappingsPointToDirectSubUnit(priorityUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(priorityUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(priorityUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(priorityUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(priorityUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(priorityUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(priorityUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(priorityUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_nameNotEmpty(priorityUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterNamesUnique(priorityUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterMappingsPointToDirectSubUnit(priorityUnit, diagnostics, context);

 		return result;

 	}

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateIteratedUnit(IteratedUnit iteratedUnit, DiagnosticChain diagnostics,

 			Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(iteratedUnit, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(iteratedUnit, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_nameNotEmpty(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterNamesUnique(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterMappingsPointToDirectSubUnit(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateIteratedUnit_iterationsNotEmpty(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateIteratedUnit_iterationsValidJavaScript(iteratedUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateIteratedUnit_iterationsAllParametersAreDeclared(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_nameNotEmpty(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterNamesUnique(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterMappingsPointToDirectSubUnit(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateIteratedUnit_iterationsNotEmpty(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateIteratedUnit_iterationsValidJavaScript(iteratedUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateIteratedUnit_iterationsAllParametersAreDeclared(iteratedUnit, diagnostics, context);

 		return result;

 	}

 

@@ -1922,65 +1724,41 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateLoopUnit(LoopUnit loopUnit, DiagnosticChain diagnostics, Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(loopUnit, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(loopUnit, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(loopUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(loopUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(loopUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(loopUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(loopUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(loopUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(loopUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(loopUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_nameNotEmpty(loopUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterNamesUnique(loopUnit, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateUnit_parameterMappingsPointToDirectSubUnit(loopUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(loopUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(loopUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(loopUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(loopUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(loopUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(loopUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(loopUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_nameNotEmpty(loopUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterNamesUnique(loopUnit, diagnostics, context);

+		if (result || diagnostics != null) result &= validateUnit_parameterMappingsPointToDirectSubUnit(loopUnit, diagnostics, context);

 		return result;

 	}

 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateNestedCondition(NestedCondition nestedCondition, DiagnosticChain diagnostics,

 			Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(nestedCondition, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(nestedCondition, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(nestedCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(nestedCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(nestedCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(nestedCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(nestedCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(nestedCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(nestedCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(nestedCondition, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateNestedCondition_mappingOriginContainedInParentCondition(nestedCondition, diagnostics,

-					context);

-		if (result || diagnostics != null)

-			result &= validateNestedCondition_mappingImageContainedInCurrent(nestedCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(nestedCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(nestedCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(nestedCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(nestedCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(nestedCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(nestedCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(nestedCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validateNestedCondition_mappingOriginContainedInParentCondition(nestedCondition, diagnostics, context);

+		if (result || diagnostics != null) result &= validateNestedCondition_mappingImageContainedInCurrent(nestedCondition, diagnostics, context);

 		return result;

 	}

 

@@ -2025,7 +1803,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateFormula(Formula formula, DiagnosticChain diagnostics, Map<Object, Object> context) {

@@ -2034,7 +1811,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateUnaryFormula(UnaryFormula unaryFormula, DiagnosticChain diagnostics,

@@ -2044,7 +1820,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateBinaryFormula(BinaryFormula binaryFormula, DiagnosticChain diagnostics,

@@ -2054,7 +1829,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateAnd(And and, DiagnosticChain diagnostics, Map<Object, Object> context) {

@@ -2063,7 +1837,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateOr(Or or, DiagnosticChain diagnostics, Map<Object, Object> context) {

@@ -2072,7 +1845,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateNot(Not not, DiagnosticChain diagnostics, Map<Object, Object> context) {

@@ -2080,8 +1852,16 @@
 	}

 

 	/**

+	 * <!-- begin-user-doc -->

+	 * <!-- end-user-doc -->

+	 * @generated

+	 */

+	public boolean validateTrue(True true_, DiagnosticChain diagnostics, Map<Object, Object> context) {

+		return validate_EveryDefaultConstraint(true_, diagnostics, context);

+	}

+

+	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateParameterKind(ParameterKind parameterKind, DiagnosticChain diagnostics,

@@ -2091,7 +1871,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateAction(Action action, DiagnosticChain diagnostics, Map<Object, Object> context) {

@@ -2100,7 +1879,6 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateXor(Xor xor, DiagnosticChain diagnostics, Map<Object, Object> context) {

@@ -2109,36 +1887,23 @@
 

 	/**

 	 * <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

 	 * @generated

 	 */

 	public boolean validateParameterMapping(ParameterMapping parameterMapping, DiagnosticChain diagnostics,

 			Map<Object, Object> context) {

-		if (!validate_NoCircularContainment(parameterMapping, diagnostics, context))

-			return false;

+		if (!validate_NoCircularContainment(parameterMapping, diagnostics, context)) return false;

 		boolean result = validate_EveryMultiplicityConforms(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryDataValueConforms(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryReferenceIsContained(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryBidirectionalReferenceIsPaired(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryProxyResolves(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_UniqueID(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryKeyUnique(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validate_EveryMapEntryUnique(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateParameterMapping_inParameterMappingIsCausal(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateParameterMapping_outParameterMappingIsCausal(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateParameterMapping_inoutParameterMappingIsCausal(parameterMapping, diagnostics, context);

-		if (result || diagnostics != null)

-			result &= validateParameterMapping_varParameterMappingIsCausal(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_UniqueID(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validateParameterMapping_inParameterMappingIsCausal(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validateParameterMapping_outParameterMappingIsCausal(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validateParameterMapping_inoutParameterMappingIsCausal(parameterMapping, diagnostics, context);

+		if (result || diagnostics != null) result &= validateParameterMapping_varParameterMappingIsCausal(parameterMapping, diagnostics, context);

 		return result;

 	}

 

@@ -2304,9 +2069,8 @@
 	}

 

 	/**

-	 * Returns the resource locator that will be used to fetch messages for this

-	 * validator's diagnostics. <!-- begin-user-doc --> <!-- end-user-doc -->

-	 * 

+	 * Returns the resource locator that will be used to fetch messages for this validator's diagnostics.

+	 * <!-- begin-user-doc --> <!-- end-user-doc -->

 	 * @generated

 	 */

 	@Override

diff --git a/plugins/org.eclipse.emf.henshin.text.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.henshin.text.ide/META-INF/MANIFEST.MF
index a489fcc..62890b7 100644
--- a/plugins/org.eclipse.emf.henshin.text.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.henshin.text.ide/META-INF/MANIFEST.MF
@@ -8,7 +8,7 @@
 Require-Bundle: org.eclipse.emf.henshin.text,

  org.eclipse.xtext.ide,

  org.eclipse.xtext.xbase.ide

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-1.7

 Export-Package: org.eclipse.emf.henshin.text.ide.contentassist.antlr,

  org.eclipse.emf.henshin.text.ide.contentassist.antlr.internal

 

diff --git a/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/Henshin_textParser.java b/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/Henshin_textParser.java
index 14e07cf..d915e4b 100644
--- a/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/Henshin_textParser.java
+++ b/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/Henshin_textParser.java
@@ -55,6 +55,8 @@
 					put(grammarAccess.getMulOrDivExpressionAccess().getOpAlternatives_1_1_0(), "rule__MulOrDivExpression__OpAlternatives_1_1_0");
 					put(grammarAccess.getPrimaryExpressionAccess().getAlternatives(), "rule__PrimaryExpression__Alternatives");
 					put(grammarAccess.getAtomicExpressionAccess().getAlternatives(), "rule__AtomicExpression__Alternatives");
+					put(grammarAccess.getParameterKindAccess().getAlternatives(), "rule__ParameterKind__Alternatives");
+					put(grammarAccess.getParameterKindRuleAccess().getAlternatives(), "rule__ParameterKindRule__Alternatives");
 					put(grammarAccess.getTypeAccess().getAlternatives(), "rule__Type__Alternatives");
 					put(grammarAccess.getModelAccess().getGroup(), "rule__Model__Group__0");
 					put(grammarAccess.getEPackageImportAccess().getGroup(), "rule__EPackageImport__Group__0");
@@ -216,8 +218,9 @@
 					put(grammarAccess.getIteratedUnitAccess().getIterationsAssignment_3(), "rule__IteratedUnit__IterationsAssignment_3");
 					put(grammarAccess.getIteratedUnitAccess().getSubElementAssignment_6(), "rule__IteratedUnit__SubElementAssignment_6");
 					put(grammarAccess.getLoopUnitAccess().getSubElementAssignment_2(), "rule__LoopUnit__SubElementAssignment_2");
-					put(grammarAccess.getParameterAccess().getNameAssignment_0(), "rule__Parameter__NameAssignment_0");
-					put(grammarAccess.getParameterAccess().getTypeAssignment_2(), "rule__Parameter__TypeAssignment_2");
+					put(grammarAccess.getParameterAccess().getKindAssignment_0(), "rule__Parameter__KindAssignment_0");
+					put(grammarAccess.getParameterAccess().getNameAssignment_1(), "rule__Parameter__NameAssignment_1");
+					put(grammarAccess.getParameterAccess().getTypeAssignment_3(), "rule__Parameter__TypeAssignment_3");
 					put(grammarAccess.getParameterTypeAccess().getEnumTypeAssignment_0(), "rule__ParameterType__EnumTypeAssignment_0");
 					put(grammarAccess.getParameterTypeAccess().getTypeAssignment_1(), "rule__ParameterType__TypeAssignment_1");
 					put(grammarAccess.getOrExpressionAccess().getRightAssignment_1_2(), "rule__OrExpression__RightAssignment_1_2");
diff --git a/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_text.g b/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_text.g
index 1f4b414..52ea0c7 100644
--- a/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_text.g
+++ b/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_text.g
@@ -1406,6 +1406,22 @@
 	restoreStackSize(stackSize);
 }
 
+// Rule ParameterKindRule
+ruleParameterKindRule
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getParameterKindRuleAccess().getAlternatives()); }
+		(rule__ParameterKindRule__Alternatives)
+		{ after(grammarAccess.getParameterKindRuleAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 // Rule Type
 ruleType
 	@init {
@@ -1962,6 +1978,39 @@
 	restoreStackSize(stackSize);
 }
 
+rule__ParameterKindRule__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getParameterKindRuleAccess().getINEnumLiteralDeclaration_0()); }
+		('IN')
+		{ after(grammarAccess.getParameterKindRuleAccess().getINEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getParameterKindRuleAccess().getOUTEnumLiteralDeclaration_1()); }
+		('OUT')
+		{ after(grammarAccess.getParameterKindRuleAccess().getOUTEnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getParameterKindRuleAccess().getINOUTEnumLiteralDeclaration_2()); }
+		('INOUT')
+		{ after(grammarAccess.getParameterKindRuleAccess().getINOUTEnumLiteralDeclaration_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getParameterKindRuleAccess().getVAREnumLiteralDeclaration_3()); }
+		('VAR')
+		{ after(grammarAccess.getParameterKindRuleAccess().getVAREnumLiteralDeclaration_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__Type__Alternatives
 	@init {
 		int stackSize = keepStackSize();
@@ -7934,9 +7983,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getParameterAccess().getNameAssignment_0()); }
-	(rule__Parameter__NameAssignment_0)
-	{ after(grammarAccess.getParameterAccess().getNameAssignment_0()); }
+	{ before(grammarAccess.getParameterAccess().getKindAssignment_0()); }
+	(rule__Parameter__KindAssignment_0)?
+	{ after(grammarAccess.getParameterAccess().getKindAssignment_0()); }
 )
 ;
 finally {
@@ -7961,9 +8010,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getParameterAccess().getColonKeyword_1()); }
-	':'
-	{ after(grammarAccess.getParameterAccess().getColonKeyword_1()); }
+	{ before(grammarAccess.getParameterAccess().getNameAssignment_1()); }
+	(rule__Parameter__NameAssignment_1)
+	{ after(grammarAccess.getParameterAccess().getNameAssignment_1()); }
 )
 ;
 finally {
@@ -7976,6 +8025,7 @@
 	}
 :
 	rule__Parameter__Group__2__Impl
+	rule__Parameter__Group__3
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -7987,9 +8037,35 @@
 	}
 :
 (
-	{ before(grammarAccess.getParameterAccess().getTypeAssignment_2()); }
-	(rule__Parameter__TypeAssignment_2)
-	{ after(grammarAccess.getParameterAccess().getTypeAssignment_2()); }
+	{ before(grammarAccess.getParameterAccess().getColonKeyword_2()); }
+	':'
+	{ after(grammarAccess.getParameterAccess().getColonKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Parameter__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Parameter__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Parameter__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getParameterAccess().getTypeAssignment_3()); }
+	(rule__Parameter__TypeAssignment_3)
+	{ after(grammarAccess.getParameterAccess().getTypeAssignment_3()); }
 )
 ;
 finally {
@@ -10980,30 +11056,45 @@
 	restoreStackSize(stackSize);
 }
 
-rule__Parameter__NameAssignment_0
+rule__Parameter__KindAssignment_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0()); }
-		RULE_ID
-		{ after(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0()); }
+		{ before(grammarAccess.getParameterAccess().getKindParameterKindRuleEnumRuleCall_0_0()); }
+		ruleParameterKindRule
+		{ after(grammarAccess.getParameterAccess().getKindParameterKindRuleEnumRuleCall_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__Parameter__TypeAssignment_2
+rule__Parameter__NameAssignment_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_2_0()); }
+		{ before(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_1_0()); }
+		RULE_ID
+		{ after(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Parameter__TypeAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_3_0()); }
 		ruleParameterType
-		{ after(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_2_0()); }
+		{ after(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_3_0()); }
 	)
 ;
 finally {
diff --git a/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_text.tokens b/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_text.tokens
index 52c1c31..eb81290 100644
--- a/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_text.tokens
+++ b/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_text.tokens
@@ -1,93 +1,97 @@
-'!'=89
+'!'=93
 '!='=23
-'('=66
-')'=67
+'('=70
+')'=71
 '*'=28
-'+'=100
-','=70
-'-'=101
-'->'=80
-'.'=64
+'+'=104
+','=74
+'-'=105
+'->'=84
+'.'=68
 '/'=29
-':'=81
+':'=85
 '<'=27
 '<='=25
-'='=84
+'='=88
 '=='=22
 '>'=26
 '>='=24
-'AND'=88
-'EBigDecimal'=30
-'EBigInteger'=31
-'EBoolean'=32
-'EBooleanObject'=33
-'EByte'=34
-'EByteArray'=35
-'EByteObject'=36
-'EChar'=37
-'ECharacterObject'=38
-'EDate'=39
-'EDiagnosticChain'=40
-'EDouble'=41
-'EDoubleObject'=42
-'EEList'=43
-'EEnumerator'=44
-'EFeatureMap'=45
-'EFeatureMapEntry'=46
-'EFloat'=47
-'EFloatObject'=48
-'EInt'=49
-'EIntegerObject'=50
-'EInvocationTargetException'=52
-'EJavaClass'=53
-'EJavaObject'=54
-'ELong'=55
-'ELongObject'=56
-'EMap'=57
-'EResource'=58
-'EResourceSet'=59
-'EShort'=60
-'EShortObject'=61
-'EString'=62
-'ETreeIterator'=51
+'AND'=92
+'EBigDecimal'=34
+'EBigInteger'=35
+'EBoolean'=36
+'EBooleanObject'=37
+'EByte'=38
+'EByteArray'=39
+'EByteObject'=40
+'EChar'=41
+'ECharacterObject'=42
+'EDate'=43
+'EDiagnosticChain'=44
+'EDouble'=45
+'EDoubleObject'=46
+'EEList'=47
+'EEnumerator'=48
+'EFeatureMap'=49
+'EFeatureMapEntry'=50
+'EFloat'=51
+'EFloatObject'=52
+'EInt'=53
+'EIntegerObject'=54
+'EInvocationTargetException'=56
+'EJavaClass'=57
+'EJavaObject'=58
+'ELong'=59
+'ELongObject'=60
+'EMap'=61
+'EResource'=62
+'EResourceSet'=63
+'EShort'=64
+'EShortObject'=65
+'EString'=66
+'ETreeIterator'=55
+'IN'=30
+'INOUT'=32
 'OR'=18
+'OUT'=31
+'VAR'=33
 'XOR'=19
-'['=76
-']'=77
-'checkDangling'=73
-'conditionGraph'=90
-'conditions'=75
+'['=80
+']'=81
+'checkDangling'=77
+'conditionGraph'=94
+'conditions'=79
 'create'=14
 'delete'=15
-'ePackageImport'=63
-'edges'=79
-'else'=96
+'ePackageImport'=67
+'edges'=83
+'else'=100
 'false'=21
-'for'=98
+'for'=102
 'forbid'=16
-'formula'=87
-'graph'=78
-'if'=94
-'independent'=93
-'injectiveMatching'=74
-'javaImport'=72
-'matchingFormula'=86
-'multiRule'=85
-'node'=82
+'formula'=91
+'graph'=82
+'if'=98
+'independent'=97
+'injectiveMatching'=78
+'javaImport'=76
+'matchingFormula'=90
+'multiRule'=89
+'node'=86
 'preserve'=13
-'priority'=97
+'priority'=101
 'require'=17
-'reuse'=83
-'rollback'=92
-'rule'=65
-'set'=102
-'strict'=91
-'then'=95
+'reuse'=87
+'rollback'=96
+'rule'=69
+'set'=106
+'strict'=95
+'then'=99
 'true'=20
-'unit'=71
-'while'=99
-'{'=68
-'}'=69
+'unit'=75
+'while'=103
+'{'=72
+'}'=73
 RULE_ANY_OTHER=12
 RULE_DECIMAL=6
 RULE_ID=4
@@ -100,6 +104,10 @@
 T__100=100
 T__101=101
 T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
 T__13=13
 T__14=14
 T__15=15
diff --git a/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_textLexer.java b/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_textLexer.java
index ed82633..3dee09f 100644
--- a/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_textLexer.java
+++ b/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_textLexer.java
@@ -109,9 +109,13 @@
     public static final int T__88=88;
     public static final int T__89=89;
     public static final int T__84=84;
+    public static final int T__104=104;
     public static final int T__85=85;
+    public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
+    public static final int T__105=105;
 
     // delegates
     // delegators
@@ -484,10 +488,10 @@
         try {
             int _type = T__30;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:28:7: ( 'EBigDecimal' )
-            // InternalHenshin_text.g:28:9: 'EBigDecimal'
+            // InternalHenshin_text.g:28:7: ( 'IN' )
+            // InternalHenshin_text.g:28:9: 'IN'
             {
-            match("EBigDecimal"); 
+            match("IN"); 
 
 
             }
@@ -505,10 +509,10 @@
         try {
             int _type = T__31;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:29:7: ( 'EBigInteger' )
-            // InternalHenshin_text.g:29:9: 'EBigInteger'
+            // InternalHenshin_text.g:29:7: ( 'OUT' )
+            // InternalHenshin_text.g:29:9: 'OUT'
             {
-            match("EBigInteger"); 
+            match("OUT"); 
 
 
             }
@@ -526,10 +530,10 @@
         try {
             int _type = T__32;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:30:7: ( 'EBoolean' )
-            // InternalHenshin_text.g:30:9: 'EBoolean'
+            // InternalHenshin_text.g:30:7: ( 'INOUT' )
+            // InternalHenshin_text.g:30:9: 'INOUT'
             {
-            match("EBoolean"); 
+            match("INOUT"); 
 
 
             }
@@ -547,10 +551,10 @@
         try {
             int _type = T__33;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:31:7: ( 'EBooleanObject' )
-            // InternalHenshin_text.g:31:9: 'EBooleanObject'
+            // InternalHenshin_text.g:31:7: ( 'VAR' )
+            // InternalHenshin_text.g:31:9: 'VAR'
             {
-            match("EBooleanObject"); 
+            match("VAR"); 
 
 
             }
@@ -568,10 +572,10 @@
         try {
             int _type = T__34;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:32:7: ( 'EByte' )
-            // InternalHenshin_text.g:32:9: 'EByte'
+            // InternalHenshin_text.g:32:7: ( 'EBigDecimal' )
+            // InternalHenshin_text.g:32:9: 'EBigDecimal'
             {
-            match("EByte"); 
+            match("EBigDecimal"); 
 
 
             }
@@ -589,10 +593,10 @@
         try {
             int _type = T__35;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:33:7: ( 'EByteArray' )
-            // InternalHenshin_text.g:33:9: 'EByteArray'
+            // InternalHenshin_text.g:33:7: ( 'EBigInteger' )
+            // InternalHenshin_text.g:33:9: 'EBigInteger'
             {
-            match("EByteArray"); 
+            match("EBigInteger"); 
 
 
             }
@@ -610,10 +614,10 @@
         try {
             int _type = T__36;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:34:7: ( 'EByteObject' )
-            // InternalHenshin_text.g:34:9: 'EByteObject'
+            // InternalHenshin_text.g:34:7: ( 'EBoolean' )
+            // InternalHenshin_text.g:34:9: 'EBoolean'
             {
-            match("EByteObject"); 
+            match("EBoolean"); 
 
 
             }
@@ -631,10 +635,10 @@
         try {
             int _type = T__37;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:35:7: ( 'EChar' )
-            // InternalHenshin_text.g:35:9: 'EChar'
+            // InternalHenshin_text.g:35:7: ( 'EBooleanObject' )
+            // InternalHenshin_text.g:35:9: 'EBooleanObject'
             {
-            match("EChar"); 
+            match("EBooleanObject"); 
 
 
             }
@@ -652,10 +656,10 @@
         try {
             int _type = T__38;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:36:7: ( 'ECharacterObject' )
-            // InternalHenshin_text.g:36:9: 'ECharacterObject'
+            // InternalHenshin_text.g:36:7: ( 'EByte' )
+            // InternalHenshin_text.g:36:9: 'EByte'
             {
-            match("ECharacterObject"); 
+            match("EByte"); 
 
 
             }
@@ -673,10 +677,10 @@
         try {
             int _type = T__39;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:37:7: ( 'EDate' )
-            // InternalHenshin_text.g:37:9: 'EDate'
+            // InternalHenshin_text.g:37:7: ( 'EByteArray' )
+            // InternalHenshin_text.g:37:9: 'EByteArray'
             {
-            match("EDate"); 
+            match("EByteArray"); 
 
 
             }
@@ -694,10 +698,10 @@
         try {
             int _type = T__40;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:38:7: ( 'EDiagnosticChain' )
-            // InternalHenshin_text.g:38:9: 'EDiagnosticChain'
+            // InternalHenshin_text.g:38:7: ( 'EByteObject' )
+            // InternalHenshin_text.g:38:9: 'EByteObject'
             {
-            match("EDiagnosticChain"); 
+            match("EByteObject"); 
 
 
             }
@@ -715,10 +719,10 @@
         try {
             int _type = T__41;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:39:7: ( 'EDouble' )
-            // InternalHenshin_text.g:39:9: 'EDouble'
+            // InternalHenshin_text.g:39:7: ( 'EChar' )
+            // InternalHenshin_text.g:39:9: 'EChar'
             {
-            match("EDouble"); 
+            match("EChar"); 
 
 
             }
@@ -736,10 +740,10 @@
         try {
             int _type = T__42;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:40:7: ( 'EDoubleObject' )
-            // InternalHenshin_text.g:40:9: 'EDoubleObject'
+            // InternalHenshin_text.g:40:7: ( 'ECharacterObject' )
+            // InternalHenshin_text.g:40:9: 'ECharacterObject'
             {
-            match("EDoubleObject"); 
+            match("ECharacterObject"); 
 
 
             }
@@ -757,10 +761,10 @@
         try {
             int _type = T__43;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:41:7: ( 'EEList' )
-            // InternalHenshin_text.g:41:9: 'EEList'
+            // InternalHenshin_text.g:41:7: ( 'EDate' )
+            // InternalHenshin_text.g:41:9: 'EDate'
             {
-            match("EEList"); 
+            match("EDate"); 
 
 
             }
@@ -778,10 +782,10 @@
         try {
             int _type = T__44;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:42:7: ( 'EEnumerator' )
-            // InternalHenshin_text.g:42:9: 'EEnumerator'
+            // InternalHenshin_text.g:42:7: ( 'EDiagnosticChain' )
+            // InternalHenshin_text.g:42:9: 'EDiagnosticChain'
             {
-            match("EEnumerator"); 
+            match("EDiagnosticChain"); 
 
 
             }
@@ -799,10 +803,10 @@
         try {
             int _type = T__45;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:43:7: ( 'EFeatureMap' )
-            // InternalHenshin_text.g:43:9: 'EFeatureMap'
+            // InternalHenshin_text.g:43:7: ( 'EDouble' )
+            // InternalHenshin_text.g:43:9: 'EDouble'
             {
-            match("EFeatureMap"); 
+            match("EDouble"); 
 
 
             }
@@ -820,10 +824,10 @@
         try {
             int _type = T__46;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:44:7: ( 'EFeatureMapEntry' )
-            // InternalHenshin_text.g:44:9: 'EFeatureMapEntry'
+            // InternalHenshin_text.g:44:7: ( 'EDoubleObject' )
+            // InternalHenshin_text.g:44:9: 'EDoubleObject'
             {
-            match("EFeatureMapEntry"); 
+            match("EDoubleObject"); 
 
 
             }
@@ -841,10 +845,10 @@
         try {
             int _type = T__47;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:45:7: ( 'EFloat' )
-            // InternalHenshin_text.g:45:9: 'EFloat'
+            // InternalHenshin_text.g:45:7: ( 'EEList' )
+            // InternalHenshin_text.g:45:9: 'EEList'
             {
-            match("EFloat"); 
+            match("EEList"); 
 
 
             }
@@ -862,10 +866,10 @@
         try {
             int _type = T__48;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:46:7: ( 'EFloatObject' )
-            // InternalHenshin_text.g:46:9: 'EFloatObject'
+            // InternalHenshin_text.g:46:7: ( 'EEnumerator' )
+            // InternalHenshin_text.g:46:9: 'EEnumerator'
             {
-            match("EFloatObject"); 
+            match("EEnumerator"); 
 
 
             }
@@ -883,10 +887,10 @@
         try {
             int _type = T__49;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:47:7: ( 'EInt' )
-            // InternalHenshin_text.g:47:9: 'EInt'
+            // InternalHenshin_text.g:47:7: ( 'EFeatureMap' )
+            // InternalHenshin_text.g:47:9: 'EFeatureMap'
             {
-            match("EInt"); 
+            match("EFeatureMap"); 
 
 
             }
@@ -904,10 +908,10 @@
         try {
             int _type = T__50;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:48:7: ( 'EIntegerObject' )
-            // InternalHenshin_text.g:48:9: 'EIntegerObject'
+            // InternalHenshin_text.g:48:7: ( 'EFeatureMapEntry' )
+            // InternalHenshin_text.g:48:9: 'EFeatureMapEntry'
             {
-            match("EIntegerObject"); 
+            match("EFeatureMapEntry"); 
 
 
             }
@@ -925,10 +929,10 @@
         try {
             int _type = T__51;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:49:7: ( 'ETreeIterator' )
-            // InternalHenshin_text.g:49:9: 'ETreeIterator'
+            // InternalHenshin_text.g:49:7: ( 'EFloat' )
+            // InternalHenshin_text.g:49:9: 'EFloat'
             {
-            match("ETreeIterator"); 
+            match("EFloat"); 
 
 
             }
@@ -946,10 +950,10 @@
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:50:7: ( 'EInvocationTargetException' )
-            // InternalHenshin_text.g:50:9: 'EInvocationTargetException'
+            // InternalHenshin_text.g:50:7: ( 'EFloatObject' )
+            // InternalHenshin_text.g:50:9: 'EFloatObject'
             {
-            match("EInvocationTargetException"); 
+            match("EFloatObject"); 
 
 
             }
@@ -967,10 +971,10 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:51:7: ( 'EJavaClass' )
-            // InternalHenshin_text.g:51:9: 'EJavaClass'
+            // InternalHenshin_text.g:51:7: ( 'EInt' )
+            // InternalHenshin_text.g:51:9: 'EInt'
             {
-            match("EJavaClass"); 
+            match("EInt"); 
 
 
             }
@@ -988,10 +992,10 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:52:7: ( 'EJavaObject' )
-            // InternalHenshin_text.g:52:9: 'EJavaObject'
+            // InternalHenshin_text.g:52:7: ( 'EIntegerObject' )
+            // InternalHenshin_text.g:52:9: 'EIntegerObject'
             {
-            match("EJavaObject"); 
+            match("EIntegerObject"); 
 
 
             }
@@ -1009,10 +1013,10 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:53:7: ( 'ELong' )
-            // InternalHenshin_text.g:53:9: 'ELong'
+            // InternalHenshin_text.g:53:7: ( 'ETreeIterator' )
+            // InternalHenshin_text.g:53:9: 'ETreeIterator'
             {
-            match("ELong"); 
+            match("ETreeIterator"); 
 
 
             }
@@ -1030,10 +1034,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:54:7: ( 'ELongObject' )
-            // InternalHenshin_text.g:54:9: 'ELongObject'
+            // InternalHenshin_text.g:54:7: ( 'EInvocationTargetException' )
+            // InternalHenshin_text.g:54:9: 'EInvocationTargetException'
             {
-            match("ELongObject"); 
+            match("EInvocationTargetException"); 
 
 
             }
@@ -1051,10 +1055,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:55:7: ( 'EMap' )
-            // InternalHenshin_text.g:55:9: 'EMap'
+            // InternalHenshin_text.g:55:7: ( 'EJavaClass' )
+            // InternalHenshin_text.g:55:9: 'EJavaClass'
             {
-            match("EMap"); 
+            match("EJavaClass"); 
 
 
             }
@@ -1072,10 +1076,10 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:56:7: ( 'EResource' )
-            // InternalHenshin_text.g:56:9: 'EResource'
+            // InternalHenshin_text.g:56:7: ( 'EJavaObject' )
+            // InternalHenshin_text.g:56:9: 'EJavaObject'
             {
-            match("EResource"); 
+            match("EJavaObject"); 
 
 
             }
@@ -1093,10 +1097,10 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:57:7: ( 'EResourceSet' )
-            // InternalHenshin_text.g:57:9: 'EResourceSet'
+            // InternalHenshin_text.g:57:7: ( 'ELong' )
+            // InternalHenshin_text.g:57:9: 'ELong'
             {
-            match("EResourceSet"); 
+            match("ELong"); 
 
 
             }
@@ -1114,10 +1118,10 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:58:7: ( 'EShort' )
-            // InternalHenshin_text.g:58:9: 'EShort'
+            // InternalHenshin_text.g:58:7: ( 'ELongObject' )
+            // InternalHenshin_text.g:58:9: 'ELongObject'
             {
-            match("EShort"); 
+            match("ELongObject"); 
 
 
             }
@@ -1135,10 +1139,10 @@
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:59:7: ( 'EShortObject' )
-            // InternalHenshin_text.g:59:9: 'EShortObject'
+            // InternalHenshin_text.g:59:7: ( 'EMap' )
+            // InternalHenshin_text.g:59:9: 'EMap'
             {
-            match("EShortObject"); 
+            match("EMap"); 
 
 
             }
@@ -1156,10 +1160,10 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:60:7: ( 'EString' )
-            // InternalHenshin_text.g:60:9: 'EString'
+            // InternalHenshin_text.g:60:7: ( 'EResource' )
+            // InternalHenshin_text.g:60:9: 'EResource'
             {
-            match("EString"); 
+            match("EResource"); 
 
 
             }
@@ -1177,10 +1181,10 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:61:7: ( 'ePackageImport' )
-            // InternalHenshin_text.g:61:9: 'ePackageImport'
+            // InternalHenshin_text.g:61:7: ( 'EResourceSet' )
+            // InternalHenshin_text.g:61:9: 'EResourceSet'
             {
-            match("ePackageImport"); 
+            match("EResourceSet"); 
 
 
             }
@@ -1198,10 +1202,11 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:62:7: ( '.' )
-            // InternalHenshin_text.g:62:9: '.'
+            // InternalHenshin_text.g:62:7: ( 'EShort' )
+            // InternalHenshin_text.g:62:9: 'EShort'
             {
-            match('.'); 
+            match("EShort"); 
+
 
             }
 
@@ -1218,10 +1223,10 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:63:7: ( 'rule' )
-            // InternalHenshin_text.g:63:9: 'rule'
+            // InternalHenshin_text.g:63:7: ( 'EShortObject' )
+            // InternalHenshin_text.g:63:9: 'EShortObject'
             {
-            match("rule"); 
+            match("EShortObject"); 
 
 
             }
@@ -1239,10 +1244,11 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:64:7: ( '(' )
-            // InternalHenshin_text.g:64:9: '('
+            // InternalHenshin_text.g:64:7: ( 'EString' )
+            // InternalHenshin_text.g:64:9: 'EString'
             {
-            match('('); 
+            match("EString"); 
+
 
             }
 
@@ -1259,10 +1265,11 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:65:7: ( ')' )
-            // InternalHenshin_text.g:65:9: ')'
+            // InternalHenshin_text.g:65:7: ( 'ePackageImport' )
+            // InternalHenshin_text.g:65:9: 'ePackageImport'
             {
-            match(')'); 
+            match("ePackageImport"); 
+
 
             }
 
@@ -1279,10 +1286,10 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:66:7: ( '{' )
-            // InternalHenshin_text.g:66:9: '{'
+            // InternalHenshin_text.g:66:7: ( '.' )
+            // InternalHenshin_text.g:66:9: '.'
             {
-            match('{'); 
+            match('.'); 
 
             }
 
@@ -1299,10 +1306,11 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:67:7: ( '}' )
-            // InternalHenshin_text.g:67:9: '}'
+            // InternalHenshin_text.g:67:7: ( 'rule' )
+            // InternalHenshin_text.g:67:9: 'rule'
             {
-            match('}'); 
+            match("rule"); 
+
 
             }
 
@@ -1319,10 +1327,10 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:68:7: ( ',' )
-            // InternalHenshin_text.g:68:9: ','
+            // InternalHenshin_text.g:68:7: ( '(' )
+            // InternalHenshin_text.g:68:9: '('
             {
-            match(','); 
+            match('('); 
 
             }
 
@@ -1339,11 +1347,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:69:7: ( 'unit' )
-            // InternalHenshin_text.g:69:9: 'unit'
+            // InternalHenshin_text.g:69:7: ( ')' )
+            // InternalHenshin_text.g:69:9: ')'
             {
-            match("unit"); 
-
+            match(')'); 
 
             }
 
@@ -1360,11 +1367,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:70:7: ( 'javaImport' )
-            // InternalHenshin_text.g:70:9: 'javaImport'
+            // InternalHenshin_text.g:70:7: ( '{' )
+            // InternalHenshin_text.g:70:9: '{'
             {
-            match("javaImport"); 
-
+            match('{'); 
 
             }
 
@@ -1381,11 +1387,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:71:7: ( 'checkDangling' )
-            // InternalHenshin_text.g:71:9: 'checkDangling'
+            // InternalHenshin_text.g:71:7: ( '}' )
+            // InternalHenshin_text.g:71:9: '}'
             {
-            match("checkDangling"); 
-
+            match('}'); 
 
             }
 
@@ -1402,11 +1407,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:72:7: ( 'injectiveMatching' )
-            // InternalHenshin_text.g:72:9: 'injectiveMatching'
+            // InternalHenshin_text.g:72:7: ( ',' )
+            // InternalHenshin_text.g:72:9: ','
             {
-            match("injectiveMatching"); 
-
+            match(','); 
 
             }
 
@@ -1423,10 +1427,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:73:7: ( 'conditions' )
-            // InternalHenshin_text.g:73:9: 'conditions'
+            // InternalHenshin_text.g:73:7: ( 'unit' )
+            // InternalHenshin_text.g:73:9: 'unit'
             {
-            match("conditions"); 
+            match("unit"); 
 
 
             }
@@ -1444,10 +1448,11 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:74:7: ( '[' )
-            // InternalHenshin_text.g:74:9: '['
+            // InternalHenshin_text.g:74:7: ( 'javaImport' )
+            // InternalHenshin_text.g:74:9: 'javaImport'
             {
-            match('['); 
+            match("javaImport"); 
+
 
             }
 
@@ -1464,10 +1469,11 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:75:7: ( ']' )
-            // InternalHenshin_text.g:75:9: ']'
+            // InternalHenshin_text.g:75:7: ( 'checkDangling' )
+            // InternalHenshin_text.g:75:9: 'checkDangling'
             {
-            match(']'); 
+            match("checkDangling"); 
+
 
             }
 
@@ -1484,10 +1490,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:76:7: ( 'graph' )
-            // InternalHenshin_text.g:76:9: 'graph'
+            // InternalHenshin_text.g:76:7: ( 'injectiveMatching' )
+            // InternalHenshin_text.g:76:9: 'injectiveMatching'
             {
-            match("graph"); 
+            match("injectiveMatching"); 
 
 
             }
@@ -1505,10 +1511,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:77:7: ( 'edges' )
-            // InternalHenshin_text.g:77:9: 'edges'
+            // InternalHenshin_text.g:77:7: ( 'conditions' )
+            // InternalHenshin_text.g:77:9: 'conditions'
             {
-            match("edges"); 
+            match("conditions"); 
 
 
             }
@@ -1526,11 +1532,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:78:7: ( '->' )
-            // InternalHenshin_text.g:78:9: '->'
+            // InternalHenshin_text.g:78:7: ( '[' )
+            // InternalHenshin_text.g:78:9: '['
             {
-            match("->"); 
-
+            match('['); 
 
             }
 
@@ -1547,10 +1552,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:79:7: ( ':' )
-            // InternalHenshin_text.g:79:9: ':'
+            // InternalHenshin_text.g:79:7: ( ']' )
+            // InternalHenshin_text.g:79:9: ']'
             {
-            match(':'); 
+            match(']'); 
 
             }
 
@@ -1567,10 +1572,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:80:7: ( 'node' )
-            // InternalHenshin_text.g:80:9: 'node'
+            // InternalHenshin_text.g:80:7: ( 'graph' )
+            // InternalHenshin_text.g:80:9: 'graph'
             {
-            match("node"); 
+            match("graph"); 
 
 
             }
@@ -1588,10 +1593,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:81:7: ( 'reuse' )
-            // InternalHenshin_text.g:81:9: 'reuse'
+            // InternalHenshin_text.g:81:7: ( 'edges' )
+            // InternalHenshin_text.g:81:9: 'edges'
             {
-            match("reuse"); 
+            match("edges"); 
 
 
             }
@@ -1609,10 +1614,11 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:82:7: ( '=' )
-            // InternalHenshin_text.g:82:9: '='
+            // InternalHenshin_text.g:82:7: ( '->' )
+            // InternalHenshin_text.g:82:9: '->'
             {
-            match('='); 
+            match("->"); 
+
 
             }
 
@@ -1629,11 +1635,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:83:7: ( 'multiRule' )
-            // InternalHenshin_text.g:83:9: 'multiRule'
+            // InternalHenshin_text.g:83:7: ( ':' )
+            // InternalHenshin_text.g:83:9: ':'
             {
-            match("multiRule"); 
-
+            match(':'); 
 
             }
 
@@ -1650,10 +1655,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:84:7: ( 'matchingFormula' )
-            // InternalHenshin_text.g:84:9: 'matchingFormula'
+            // InternalHenshin_text.g:84:7: ( 'node' )
+            // InternalHenshin_text.g:84:9: 'node'
             {
-            match("matchingFormula"); 
+            match("node"); 
 
 
             }
@@ -1671,10 +1676,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:85:7: ( 'formula' )
-            // InternalHenshin_text.g:85:9: 'formula'
+            // InternalHenshin_text.g:85:7: ( 'reuse' )
+            // InternalHenshin_text.g:85:9: 'reuse'
             {
-            match("formula"); 
+            match("reuse"); 
 
 
             }
@@ -1692,11 +1697,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:86:7: ( 'AND' )
-            // InternalHenshin_text.g:86:9: 'AND'
+            // InternalHenshin_text.g:86:7: ( '=' )
+            // InternalHenshin_text.g:86:9: '='
             {
-            match("AND"); 
-
+            match('='); 
 
             }
 
@@ -1713,10 +1717,11 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:87:7: ( '!' )
-            // InternalHenshin_text.g:87:9: '!'
+            // InternalHenshin_text.g:87:7: ( 'multiRule' )
+            // InternalHenshin_text.g:87:9: 'multiRule'
             {
-            match('!'); 
+            match("multiRule"); 
+
 
             }
 
@@ -1733,10 +1738,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:88:7: ( 'conditionGraph' )
-            // InternalHenshin_text.g:88:9: 'conditionGraph'
+            // InternalHenshin_text.g:88:7: ( 'matchingFormula' )
+            // InternalHenshin_text.g:88:9: 'matchingFormula'
             {
-            match("conditionGraph"); 
+            match("matchingFormula"); 
 
 
             }
@@ -1754,10 +1759,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:89:7: ( 'strict' )
-            // InternalHenshin_text.g:89:9: 'strict'
+            // InternalHenshin_text.g:89:7: ( 'formula' )
+            // InternalHenshin_text.g:89:9: 'formula'
             {
-            match("strict"); 
+            match("formula"); 
 
 
             }
@@ -1775,10 +1780,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:90:7: ( 'rollback' )
-            // InternalHenshin_text.g:90:9: 'rollback'
+            // InternalHenshin_text.g:90:7: ( 'AND' )
+            // InternalHenshin_text.g:90:9: 'AND'
             {
-            match("rollback"); 
+            match("AND"); 
 
 
             }
@@ -1796,11 +1801,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:91:7: ( 'independent' )
-            // InternalHenshin_text.g:91:9: 'independent'
+            // InternalHenshin_text.g:91:7: ( '!' )
+            // InternalHenshin_text.g:91:9: '!'
             {
-            match("independent"); 
-
+            match('!'); 
 
             }
 
@@ -1817,10 +1821,10 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:92:7: ( 'if' )
-            // InternalHenshin_text.g:92:9: 'if'
+            // InternalHenshin_text.g:92:7: ( 'conditionGraph' )
+            // InternalHenshin_text.g:92:9: 'conditionGraph'
             {
-            match("if"); 
+            match("conditionGraph"); 
 
 
             }
@@ -1838,10 +1842,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:93:7: ( 'then' )
-            // InternalHenshin_text.g:93:9: 'then'
+            // InternalHenshin_text.g:93:7: ( 'strict' )
+            // InternalHenshin_text.g:93:9: 'strict'
             {
-            match("then"); 
+            match("strict"); 
 
 
             }
@@ -1859,10 +1863,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:94:7: ( 'else' )
-            // InternalHenshin_text.g:94:9: 'else'
+            // InternalHenshin_text.g:94:7: ( 'rollback' )
+            // InternalHenshin_text.g:94:9: 'rollback'
             {
-            match("else"); 
+            match("rollback"); 
 
 
             }
@@ -1880,10 +1884,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:95:7: ( 'priority' )
-            // InternalHenshin_text.g:95:9: 'priority'
+            // InternalHenshin_text.g:95:7: ( 'independent' )
+            // InternalHenshin_text.g:95:9: 'independent'
             {
-            match("priority"); 
+            match("independent"); 
 
 
             }
@@ -1901,10 +1905,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:96:7: ( 'for' )
-            // InternalHenshin_text.g:96:9: 'for'
+            // InternalHenshin_text.g:96:7: ( 'if' )
+            // InternalHenshin_text.g:96:9: 'if'
             {
-            match("for"); 
+            match("if"); 
 
 
             }
@@ -1922,10 +1926,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:97:7: ( 'while' )
-            // InternalHenshin_text.g:97:9: 'while'
+            // InternalHenshin_text.g:97:7: ( 'then' )
+            // InternalHenshin_text.g:97:9: 'then'
             {
-            match("while"); 
+            match("then"); 
 
 
             }
@@ -1943,10 +1947,11 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:98:8: ( '+' )
-            // InternalHenshin_text.g:98:10: '+'
+            // InternalHenshin_text.g:98:8: ( 'else' )
+            // InternalHenshin_text.g:98:10: 'else'
             {
-            match('+'); 
+            match("else"); 
+
 
             }
 
@@ -1963,10 +1968,11 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:99:8: ( '-' )
-            // InternalHenshin_text.g:99:10: '-'
+            // InternalHenshin_text.g:99:8: ( 'priority' )
+            // InternalHenshin_text.g:99:10: 'priority'
             {
-            match('-'); 
+            match("priority"); 
+
 
             }
 
@@ -1983,10 +1989,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:100:8: ( 'set' )
-            // InternalHenshin_text.g:100:10: 'set'
+            // InternalHenshin_text.g:100:8: ( 'for' )
+            // InternalHenshin_text.g:100:10: 'for'
             {
-            match("set"); 
+            match("for"); 
 
 
             }
@@ -1999,15 +2005,97 @@
     }
     // $ANTLR end "T__102"
 
+    // $ANTLR start "T__103"
+    public final void mT__103() throws RecognitionException {
+        try {
+            int _type = T__103;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalHenshin_text.g:101:8: ( 'while' )
+            // InternalHenshin_text.g:101:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
+        try {
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalHenshin_text.g:102:8: ( '+' )
+            // InternalHenshin_text.g:102:10: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__104"
+
+    // $ANTLR start "T__105"
+    public final void mT__105() throws RecognitionException {
+        try {
+            int _type = T__105;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalHenshin_text.g:103:8: ( '-' )
+            // InternalHenshin_text.g:103:10: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__105"
+
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
+        try {
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalHenshin_text.g:104:8: ( 'set' )
+            // InternalHenshin_text.g:104:10: 'set'
+            {
+            match("set"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
     // $ANTLR start "RULE_DECIMAL"
     public final void mRULE_DECIMAL() throws RecognitionException {
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:11366:14: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // InternalHenshin_text.g:11366:16: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // InternalHenshin_text.g:11457:14: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // InternalHenshin_text.g:11457:16: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // InternalHenshin_text.g:11366:16: ( '-' )?
+            // InternalHenshin_text.g:11457:16: ( '-' )?
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2016,7 +2104,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalHenshin_text.g:11366:16: '-'
+                    // InternalHenshin_text.g:11457:16: '-'
                     {
                     match('-'); 
 
@@ -2025,7 +2113,7 @@
 
             }
 
-            // InternalHenshin_text.g:11366:21: ( '0' .. '9' )+
+            // InternalHenshin_text.g:11457:21: ( '0' .. '9' )+
             int cnt2=0;
             loop2:
             do {
@@ -2039,7 +2127,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // InternalHenshin_text.g:11366:22: '0' .. '9'
+            	    // InternalHenshin_text.g:11457:22: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2056,7 +2144,7 @@
             } while (true);
 
             match('.'); 
-            // InternalHenshin_text.g:11366:37: ( '0' .. '9' )+
+            // InternalHenshin_text.g:11457:37: ( '0' .. '9' )+
             int cnt3=0;
             loop3:
             do {
@@ -2070,7 +2158,7 @@
 
                 switch (alt3) {
             	case 1 :
-            	    // InternalHenshin_text.g:11366:38: '0' .. '9'
+            	    // InternalHenshin_text.g:11457:38: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2102,11 +2190,11 @@
         try {
             int _type = RULE_NEGATIVE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:11368:15: ( '-' ( '0' .. '9' )+ )
-            // InternalHenshin_text.g:11368:17: '-' ( '0' .. '9' )+
+            // InternalHenshin_text.g:11459:15: ( '-' ( '0' .. '9' )+ )
+            // InternalHenshin_text.g:11459:17: '-' ( '0' .. '9' )+
             {
             match('-'); 
-            // InternalHenshin_text.g:11368:21: ( '0' .. '9' )+
+            // InternalHenshin_text.g:11459:21: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -2120,7 +2208,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // InternalHenshin_text.g:11368:22: '0' .. '9'
+            	    // InternalHenshin_text.g:11459:22: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2152,10 +2240,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:11370:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
-            // InternalHenshin_text.g:11370:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            // InternalHenshin_text.g:11461:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // InternalHenshin_text.g:11461:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
             {
-            // InternalHenshin_text.g:11370:11: ( '^' )?
+            // InternalHenshin_text.g:11461:11: ( '^' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -2164,7 +2252,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // InternalHenshin_text.g:11370:11: '^'
+                    // InternalHenshin_text.g:11461:11: '^'
                     {
                     match('^'); 
 
@@ -2182,7 +2270,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalHenshin_text.g:11370:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            // InternalHenshin_text.g:11461:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
             loop6:
             do {
                 int alt6=2;
@@ -2231,10 +2319,10 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:11372:10: ( ( '0' .. '9' )+ )
-            // InternalHenshin_text.g:11372:12: ( '0' .. '9' )+
+            // InternalHenshin_text.g:11463:10: ( ( '0' .. '9' )+ )
+            // InternalHenshin_text.g:11463:12: ( '0' .. '9' )+
             {
-            // InternalHenshin_text.g:11372:12: ( '0' .. '9' )+
+            // InternalHenshin_text.g:11463:12: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -2248,7 +2336,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // InternalHenshin_text.g:11372:13: '0' .. '9'
+            	    // InternalHenshin_text.g:11463:13: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2280,10 +2368,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:11374:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
-            // InternalHenshin_text.g:11374:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            // InternalHenshin_text.g:11465:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // InternalHenshin_text.g:11465:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
             {
-            // InternalHenshin_text.g:11374:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            // InternalHenshin_text.g:11465:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -2301,10 +2389,10 @@
             }
             switch (alt10) {
                 case 1 :
-                    // InternalHenshin_text.g:11374:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    // InternalHenshin_text.g:11465:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
                     {
                     match('\"'); 
-                    // InternalHenshin_text.g:11374:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalHenshin_text.g:11465:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -2320,7 +2408,7 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // InternalHenshin_text.g:11374:21: '\\\\' .
+                    	    // InternalHenshin_text.g:11465:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2328,7 +2416,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalHenshin_text.g:11374:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalHenshin_text.g:11465:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2353,10 +2441,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:11374:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    // InternalHenshin_text.g:11465:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
                     {
                     match('\''); 
-                    // InternalHenshin_text.g:11374:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalHenshin_text.g:11465:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -2372,7 +2460,7 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // InternalHenshin_text.g:11374:54: '\\\\' .
+                    	    // InternalHenshin_text.g:11465:54: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2380,7 +2468,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalHenshin_text.g:11374:61: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalHenshin_text.g:11465:61: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2423,12 +2511,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:11376:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalHenshin_text.g:11376:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalHenshin_text.g:11467:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalHenshin_text.g:11467:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalHenshin_text.g:11376:24: ( options {greedy=false; } : . )*
+            // InternalHenshin_text.g:11467:24: ( options {greedy=false; } : . )*
             loop11:
             do {
                 int alt11=2;
@@ -2453,7 +2541,7 @@
 
                 switch (alt11) {
             	case 1 :
-            	    // InternalHenshin_text.g:11376:52: .
+            	    // InternalHenshin_text.g:11467:52: .
             	    {
             	    matchAny(); 
 
@@ -2483,12 +2571,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:11378:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalHenshin_text.g:11378:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalHenshin_text.g:11469:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalHenshin_text.g:11469:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalHenshin_text.g:11378:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalHenshin_text.g:11469:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop12:
             do {
                 int alt12=2;
@@ -2501,7 +2589,7 @@
 
                 switch (alt12) {
             	case 1 :
-            	    // InternalHenshin_text.g:11378:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalHenshin_text.g:11469:24: ~ ( ( '\\n' | '\\r' ) )
             	    {
             	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
             	        input.consume();
@@ -2521,7 +2609,7 @@
                 }
             } while (true);
 
-            // InternalHenshin_text.g:11378:40: ( ( '\\r' )? '\\n' )?
+            // InternalHenshin_text.g:11469:40: ( ( '\\r' )? '\\n' )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2530,9 +2618,9 @@
             }
             switch (alt14) {
                 case 1 :
-                    // InternalHenshin_text.g:11378:41: ( '\\r' )? '\\n'
+                    // InternalHenshin_text.g:11469:41: ( '\\r' )? '\\n'
                     {
-                    // InternalHenshin_text.g:11378:41: ( '\\r' )?
+                    // InternalHenshin_text.g:11469:41: ( '\\r' )?
                     int alt13=2;
                     int LA13_0 = input.LA(1);
 
@@ -2541,7 +2629,7 @@
                     }
                     switch (alt13) {
                         case 1 :
-                            // InternalHenshin_text.g:11378:41: '\\r'
+                            // InternalHenshin_text.g:11469:41: '\\r'
                             {
                             match('\r'); 
 
@@ -2573,10 +2661,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:11380:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalHenshin_text.g:11380:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalHenshin_text.g:11471:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalHenshin_text.g:11471:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalHenshin_text.g:11380:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalHenshin_text.g:11471:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt15=0;
             loop15:
             do {
@@ -2630,8 +2718,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:11382:16: ( . )
-            // InternalHenshin_text.g:11382:18: .
+            // InternalHenshin_text.g:11473:16: ( . )
+            // InternalHenshin_text.g:11473:18: .
             {
             matchAny(); 
 
@@ -2646,8 +2734,8 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // InternalHenshin_text.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | RULE_DECIMAL | RULE_NEGATIVE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt16=99;
+        // InternalHenshin_text.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | RULE_DECIMAL | RULE_NEGATIVE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt16=103;
         alt16 = dfa16.predict(input);
         switch (alt16) {
             case 1 :
@@ -3281,63 +3369,91 @@
                 }
                 break;
             case 91 :
-                // InternalHenshin_text.g:1:553: RULE_DECIMAL
+                // InternalHenshin_text.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // InternalHenshin_text.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // InternalHenshin_text.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // InternalHenshin_text.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // InternalHenshin_text.g:1:581: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 92 :
-                // InternalHenshin_text.g:1:566: RULE_NEGATIVE
+            case 96 :
+                // InternalHenshin_text.g:1:594: RULE_NEGATIVE
                 {
                 mRULE_NEGATIVE(); 
 
                 }
                 break;
-            case 93 :
-                // InternalHenshin_text.g:1:580: RULE_ID
+            case 97 :
+                // InternalHenshin_text.g:1:608: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 94 :
-                // InternalHenshin_text.g:1:588: RULE_INT
+            case 98 :
+                // InternalHenshin_text.g:1:616: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 95 :
-                // InternalHenshin_text.g:1:597: RULE_STRING
+            case 99 :
+                // InternalHenshin_text.g:1:625: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 96 :
-                // InternalHenshin_text.g:1:609: RULE_ML_COMMENT
+            case 100 :
+                // InternalHenshin_text.g:1:637: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 97 :
-                // InternalHenshin_text.g:1:625: RULE_SL_COMMENT
+            case 101 :
+                // InternalHenshin_text.g:1:653: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 98 :
-                // InternalHenshin_text.g:1:641: RULE_WS
+            case 102 :
+                // InternalHenshin_text.g:1:669: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 99 :
-                // InternalHenshin_text.g:1:649: RULE_ANY_OTHER
+            case 103 :
+                // InternalHenshin_text.g:1:677: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -3351,162 +3467,160 @@
 
     protected DFA16 dfa16 = new DFA16(this);
     static final String DFA16_eotS =
-        "\1\uffff\10\55\1\74\1\76\1\100\1\102\1\uffff\1\106\2\55\6\uffff\3\55\2\uffff\1\55\1\144\1\uffff\5\55\1\uffff\1\157\1\53\1\uffff\2\53\2\uffff\1\55\1\uffff\11\55\1\u0080\3\55\14\uffff\17\55\6\uffff\3\55\1\u009e\2\uffff\1\55\2\uffff\1\u00a0\1\uffff\7\55\2\uffff\1\157\3\uffff\6\55\1\u00b0\5\55\1\uffff\1\u00b6\34\55\1\uffff\1\55\1\uffff\3\55\1\u00d8\1\55\1\u00da\11\55\1\uffff\3\55\1\u00e7\1\55\1\uffff\1\u00e9\1\u00ea\13\55\1\u00f8\4\55\1\u00fd\5\55\1\u0103\1\u0104\4\55\1\u0109\2\55\1\uffff\1\55\1\uffff\11\55\1\u0116\1\55\1\u0118\1\uffff\1\55\2\uffff\3\55\1\u011f\1\u0121\1\u0122\7\55\1\uffff\3\55\1\u012f\1\uffff\4\55\1\u0134\2\uffff\3\55\1\u0138\1\uffff\3\55\1\u013c\2\55\1\u013f\2\55\1\u0142\1\u0143\1\55\1\uffff\1\55\1\uffff\6\55\1\uffff\1\55\2\uffff\2\55\1\u014f\2\55\1\u0153\6\55\1\uffff\1\55\1\u015c\2\55\1\uffff\3\55\1\uffff\2\55\1\u0164\1\uffff\2\55\1\uffff\2\55\2\uffff\1\u0169\1\u016a\10\55\1\u0174\1\uffff\3\55\1\uffff\10\55\1\uffff\1\u0180\6\55\1\uffff\1\u0187\1\u0188\2\55\2\uffff\1\u018b\2\55\1\u018f\5\55\1\uffff\13\55\1\uffff\6\55\2\uffff\2\55\1\uffff\3\55\1\uffff\16\55\1\u01bb\5\55\1\u01c1\2\55\1\u01c4\4\55\1\u01c9\12\55\1\u01d4\3\55\1\uffff\2\55\1\u01da\2\55\1\uffff\2\55\1\uffff\1\55\1\u01e0\1\u01e1\1\55\1\uffff\1\u01e3\3\55\1\u01e7\1\u01e9\4\55\1\uffff\1\u01ee\1\u01ef\3\55\1\uffff\1\55\1\u01f4\3\55\2\uffff\1\55\1\uffff\3\55\1\uffff\1\55\1\uffff\1\u01fd\3\55\2\uffff\1\u0201\1\u0202\2\55\1\uffff\1\55\1\u0206\4\55\1\u020b\1\55\1\uffff\2\55\1\u020f\2\uffff\3\55\1\uffff\1\u0213\1\u0214\2\55\1\uffff\1\55\1\u0218\1\55\1\uffff\1\u021a\2\55\2\uffff\3\55\1\uffff\1\55\1\uffff\1\55\1\u0222\1\u0223\1\u0224\1\u0225\2\55\4\uffff\1\55\1\u0229\1\55\1\uffff\7\55\1\u0232\1\uffff";
+        "\1\uffff\10\57\1\77\1\101\1\103\1\105\1\uffff\1\111\4\57\6\uffff\3\57\2\uffff\1\57\1\152\1\uffff\5\57\1\uffff\1\164\1\55\1\uffff\2\55\2\uffff\1\57\1\uffff\11\57\1\u0085\4\57\14\uffff\1\u008b\20\57\6\uffff\3\57\1\u00a7\2\uffff\1\57\1\uffff\1\u00a9\2\uffff\7\57\2\uffff\1\164\3\uffff\6\57\1\u00b9\5\57\1\uffff\1\u00bf\1\u00c0\3\57\1\uffff\1\u00c4\32\57\1\uffff\1\57\1\uffff\3\57\1\u00e4\1\57\1\u00e6\11\57\1\uffff\3\57\1\u00f3\1\57\2\uffff\1\u00f5\1\u00f6\1\57\1\uffff\13\57\1\u0105\4\57\1\u010a\5\57\1\u0110\1\u0111\4\57\1\u0116\2\57\1\uffff\1\57\1\uffff\11\57\1\u0123\1\57\1\u0125\1\uffff\1\57\2\uffff\1\u0127\3\57\1\u012d\1\u012f\1\u0130\7\57\1\uffff\3\57\1\u013d\1\uffff\4\57\1\u0142\2\uffff\3\57\1\u0146\1\uffff\3\57\1\u014a\2\57\1\u014d\2\57\1\u0150\1\u0151\1\57\1\uffff\1\57\1\uffff\1\57\1\uffff\5\57\1\uffff\1\57\2\uffff\2\57\1\u015d\2\57\1\u0161\6\57\1\uffff\1\57\1\u016a\2\57\1\uffff\3\57\1\uffff\2\57\1\u0172\1\uffff\2\57\1\uffff\2\57\2\uffff\1\u0177\1\u0178\10\57\1\u0182\1\uffff\3\57\1\uffff\10\57\1\uffff\1\u018e\6\57\1\uffff\1\u0195\1\u0196\2\57\2\uffff\1\u0199\2\57\1\u019d\5\57\1\uffff\13\57\1\uffff\6\57\2\uffff\2\57\1\uffff\3\57\1\uffff\16\57\1\u01c9\5\57\1\u01cf\2\57\1\u01d2\4\57\1\u01d7\12\57\1\u01e2\3\57\1\uffff\2\57\1\u01e8\2\57\1\uffff\2\57\1\uffff\1\57\1\u01ee\1\u01ef\1\57\1\uffff\1\u01f1\3\57\1\u01f5\1\u01f7\4\57\1\uffff\1\u01fc\1\u01fd\3\57\1\uffff\1\57\1\u0202\3\57\2\uffff\1\57\1\uffff\3\57\1\uffff\1\57\1\uffff\1\u020b\3\57\2\uffff\1\u020f\1\u0210\2\57\1\uffff\1\57\1\u0214\4\57\1\u0219\1\57\1\uffff\2\57\1\u021d\2\uffff\3\57\1\uffff\1\u0221\1\u0222\2\57\1\uffff\1\57\1\u0226\1\57\1\uffff\1\u0228\2\57\2\uffff\3\57\1\uffff\1\57\1\uffff\1\57\1\u0230\1\u0231\1\u0232\1\u0233\2\57\4\uffff\1\57\1\u0237\1\57\1\uffff\7\57\1\u0240\1\uffff";
     static final String DFA16_eofS =
-        "\u0233\uffff";
+        "\u0241\uffff";
     static final String DFA16_minS =
-        "\1\0\1\162\1\150\1\145\1\141\1\145\1\122\1\117\1\150\4\75\1\uffff\1\52\1\102\1\120\6\uffff\1\156\1\141\1\146\2\uffff\1\162\1\60\1\uffff\1\157\1\141\1\116\1\145\1\150\1\uffff\1\56\1\101\1\uffff\2\0\2\uffff\1\145\1\uffff\2\145\1\156\1\154\1\162\1\154\1\161\2\154\1\60\1\122\1\165\1\145\14\uffff\1\151\1\150\1\141\1\114\1\145\1\156\1\162\1\141\1\157\1\141\1\145\1\150\1\141\1\147\1\163\6\uffff\1\151\1\166\1\144\1\60\2\uffff\1\141\2\uffff\1\56\1\uffff\1\144\1\154\1\164\1\104\1\162\1\164\1\151\2\uffff\1\56\3\uffff\1\163\1\157\1\141\1\143\1\144\1\145\1\60\1\163\1\165\1\163\1\145\1\154\1\uffff\1\60\1\145\1\156\1\147\1\157\1\164\1\141\1\164\1\141\1\165\1\151\1\165\1\141\1\157\1\164\1\145\1\166\1\156\1\160\1\163\1\157\1\162\1\143\2\145\1\164\1\141\2\145\1\uffff\1\160\1\uffff\1\145\1\164\1\143\1\60\1\151\1\60\1\154\1\145\1\162\1\164\1\153\1\151\1\164\1\151\1\165\1\uffff\1\145\1\151\1\145\1\60\1\142\1\uffff\2\60\1\104\1\154\1\145\1\162\1\145\1\147\1\142\1\163\1\155\1\164\1\141\1\60\1\157\1\145\1\141\1\147\1\60\1\157\1\162\1\151\1\153\1\163\2\60\1\111\1\143\1\160\1\150\1\60\1\151\1\150\1\uffff\1\143\1\uffff\1\145\1\162\1\151\1\145\1\104\1\164\1\145\1\144\1\154\1\60\1\162\1\60\1\uffff\1\141\2\uffff\1\145\1\156\1\145\3\60\1\156\1\154\1\164\1\145\1\165\1\164\1\147\1\uffff\1\143\1\111\1\103\1\60\1\uffff\1\165\1\164\1\156\1\141\1\60\2\uffff\1\155\1\164\1\145\1\60\1\uffff\1\122\1\151\1\164\1\60\1\166\1\164\1\60\1\141\1\151\2\60\1\141\1\uffff\1\145\1\uffff\2\143\1\164\1\141\1\162\1\142\1\uffff\1\143\2\uffff\1\157\1\145\1\60\2\162\1\60\1\145\1\141\1\164\1\154\2\142\1\uffff\1\162\1\60\2\147\1\uffff\1\160\1\151\1\156\1\uffff\1\165\1\156\1\60\1\uffff\1\145\1\171\1\uffff\1\156\1\157\2\uffff\2\60\1\153\1\151\1\145\1\156\1\162\1\152\1\164\1\163\1\60\1\uffff\1\141\1\145\1\142\1\uffff\1\162\1\164\1\145\1\141\2\152\1\143\1\142\1\uffff\1\60\1\145\1\157\1\166\1\144\1\154\1\147\1\uffff\2\60\1\147\1\156\2\uffff\1\60\1\155\1\147\1\60\1\141\2\145\1\164\1\142\1\uffff\1\164\1\115\1\152\1\117\1\151\1\162\1\163\3\145\1\152\1\uffff\1\111\1\162\3\145\1\106\2\uffff\1\154\1\107\1\uffff\1\141\1\145\1\142\1\uffff\1\171\1\143\1\162\1\151\1\152\1\157\1\141\1\145\1\142\1\157\1\141\1\163\2\143\1\60\1\145\1\155\1\164\1\115\1\156\1\60\1\157\1\151\1\60\1\162\1\154\1\162\1\152\1\60\1\164\1\117\1\143\1\145\1\162\1\160\1\143\1\152\1\156\1\164\1\60\2\164\1\145\1\uffff\1\143\1\160\1\60\1\141\1\164\1\uffff\1\162\1\156\1\uffff\1\141\2\60\1\145\1\uffff\1\60\1\142\1\103\1\143\2\60\1\164\1\145\1\124\1\157\1\uffff\2\60\2\164\1\157\1\uffff\1\164\1\60\1\155\1\147\1\160\2\uffff\1\143\1\uffff\1\152\1\150\1\164\1\uffff\1\156\1\uffff\1\60\1\143\1\141\1\162\2\uffff\2\60\1\162\1\143\1\uffff\1\165\1\60\1\150\1\164\1\145\1\141\1\60\1\164\1\uffff\1\164\1\162\1\60\2\uffff\1\164\1\150\1\154\1\uffff\2\60\1\143\1\151\1\uffff\1\162\1\60\1\147\1\uffff\1\60\1\151\1\141\2\uffff\1\164\1\156\1\171\1\uffff\1\145\1\uffff\1\156\4\60\1\164\1\147\4\uffff\1\105\1\60\1\170\1\uffff\1\143\1\145\1\160\1\164\1\151\1\157\1\156\1\60\1\uffff";
+        "\1\0\1\162\1\150\1\145\1\141\1\145\1\122\1\117\1\150\4\75\1\uffff\1\52\1\116\1\101\1\102\1\120\6\uffff\1\156\1\141\1\146\2\uffff\1\162\1\60\1\uffff\1\157\1\141\1\116\1\145\1\150\1\uffff\1\56\1\101\1\uffff\2\0\2\uffff\1\145\1\uffff\2\145\1\156\1\154\1\162\1\154\1\161\2\154\1\60\1\124\1\122\1\165\1\145\14\uffff\1\60\1\122\1\151\1\150\1\141\1\114\1\145\1\156\1\162\1\141\1\157\1\141\1\145\1\150\1\141\1\147\1\163\6\uffff\1\151\1\166\1\144\1\60\2\uffff\1\141\1\uffff\1\56\2\uffff\1\144\1\154\1\164\1\104\1\162\1\164\1\151\2\uffff\1\56\3\uffff\1\163\1\157\1\141\1\143\1\144\1\145\1\60\1\163\1\165\1\163\1\145\1\154\1\uffff\2\60\1\145\1\156\1\125\1\uffff\1\60\1\147\1\157\1\164\1\141\1\164\1\141\1\165\1\151\1\165\1\141\1\157\1\164\1\145\1\166\1\156\1\160\1\163\1\157\1\162\1\143\2\145\1\164\1\141\2\145\1\uffff\1\160\1\uffff\1\145\1\164\1\143\1\60\1\151\1\60\1\154\1\145\1\162\1\164\1\153\1\151\1\164\1\151\1\165\1\uffff\1\145\1\151\1\145\1\60\1\142\2\uffff\2\60\1\124\1\uffff\1\104\1\154\1\145\1\162\1\145\1\147\1\142\1\163\1\155\1\164\1\141\1\60\1\157\1\145\1\141\1\147\1\60\1\157\1\162\1\151\1\153\1\163\2\60\1\111\1\143\1\160\1\150\1\60\1\151\1\150\1\uffff\1\143\1\uffff\1\145\1\162\1\151\1\145\1\104\1\164\1\145\1\144\1\154\1\60\1\162\1\60\1\uffff\1\141\2\uffff\1\60\1\145\1\156\1\145\3\60\1\156\1\154\1\164\1\145\1\165\1\164\1\147\1\uffff\1\143\1\111\1\103\1\60\1\uffff\1\165\1\164\1\156\1\141\1\60\2\uffff\1\155\1\164\1\145\1\60\1\uffff\1\122\1\151\1\164\1\60\1\166\1\164\1\60\1\141\1\151\2\60\1\141\1\uffff\1\145\1\uffff\1\143\1\uffff\1\143\1\164\1\141\1\162\1\142\1\uffff\1\143\2\uffff\1\157\1\145\1\60\2\162\1\60\1\145\1\141\1\164\1\154\2\142\1\uffff\1\162\1\60\2\147\1\uffff\1\160\1\151\1\156\1\uffff\1\165\1\156\1\60\1\uffff\1\145\1\171\1\uffff\1\156\1\157\2\uffff\2\60\1\153\1\151\1\145\1\156\1\162\1\152\1\164\1\163\1\60\1\uffff\1\141\1\145\1\142\1\uffff\1\162\1\164\1\145\1\141\2\152\1\143\1\142\1\uffff\1\60\1\145\1\157\1\166\1\144\1\154\1\147\1\uffff\2\60\1\147\1\156\2\uffff\1\60\1\155\1\147\1\60\1\141\2\145\1\164\1\142\1\uffff\1\164\1\115\1\152\1\117\1\151\1\162\1\163\3\145\1\152\1\uffff\1\111\1\162\3\145\1\106\2\uffff\1\154\1\107\1\uffff\1\141\1\145\1\142\1\uffff\1\171\1\143\1\162\1\151\1\152\1\157\1\141\1\145\1\142\1\157\1\141\1\163\2\143\1\60\1\145\1\155\1\164\1\115\1\156\1\60\1\157\1\151\1\60\1\162\1\154\1\162\1\152\1\60\1\164\1\117\1\143\1\145\1\162\1\160\1\143\1\152\1\156\1\164\1\60\2\164\1\145\1\uffff\1\143\1\160\1\60\1\141\1\164\1\uffff\1\162\1\156\1\uffff\1\141\2\60\1\145\1\uffff\1\60\1\142\1\103\1\143\2\60\1\164\1\145\1\124\1\157\1\uffff\2\60\2\164\1\157\1\uffff\1\164\1\60\1\155\1\147\1\160\2\uffff\1\143\1\uffff\1\152\1\150\1\164\1\uffff\1\156\1\uffff\1\60\1\143\1\141\1\162\2\uffff\2\60\1\162\1\143\1\uffff\1\165\1\60\1\150\1\164\1\145\1\141\1\60\1\164\1\uffff\1\164\1\162\1\60\2\uffff\1\164\1\150\1\154\1\uffff\2\60\1\143\1\151\1\uffff\1\162\1\60\1\147\1\uffff\1\60\1\151\1\141\2\uffff\1\164\1\156\1\171\1\uffff\1\145\1\uffff\1\156\4\60\1\164\1\147\4\uffff\1\105\1\60\1\170\1\uffff\1\143\1\145\1\160\1\164\1\151\1\157\1\156\1\60\1\uffff";
     static final String DFA16_maxS =
-        "\1\uffff\2\162\1\145\1\157\1\165\1\122\1\117\1\162\4\75\1\uffff\1\57\1\124\1\154\6\uffff\1\156\1\141\1\156\2\uffff\1\162\1\76\1\uffff\1\157\1\165\1\116\1\164\1\150\1\uffff\1\71\1\172\1\uffff\2\uffff\2\uffff\1\151\1\uffff\2\145\1\156\1\154\1\162\1\154\1\165\2\154\1\172\1\122\1\165\1\145\14\uffff\1\171\1\150\1\157\1\156\1\154\1\156\1\162\1\141\1\157\1\141\1\145\1\164\1\141\1\147\1\163\6\uffff\1\151\1\166\1\152\1\172\2\uffff\1\141\2\uffff\1\71\1\uffff\1\144\1\154\1\164\1\104\1\162\1\164\1\151\2\uffff\1\71\3\uffff\1\163\1\157\1\141\1\143\1\144\1\145\1\172\1\163\1\165\1\163\1\145\1\154\1\uffff\1\172\1\145\1\156\1\147\1\157\1\164\1\141\1\164\1\141\1\165\1\151\1\165\1\141\1\157\1\166\1\145\1\166\1\156\1\160\1\163\1\157\1\162\1\143\2\145\1\164\1\141\2\145\1\uffff\1\160\1\uffff\1\145\1\164\1\143\1\172\1\151\1\172\1\154\1\145\1\162\1\164\1\153\1\151\1\164\1\151\1\165\1\uffff\1\145\1\151\1\145\1\172\1\142\1\uffff\2\172\1\111\1\154\1\145\1\162\1\145\1\147\1\142\1\163\1\155\1\164\1\141\1\172\1\157\1\145\1\141\1\147\1\172\1\157\1\162\1\151\1\153\1\163\2\172\1\111\1\143\1\160\1\150\1\172\1\151\1\150\1\uffff\1\143\1\uffff\1\145\1\162\1\151\1\145\1\104\1\164\1\145\1\144\1\154\1\172\1\162\1\172\1\uffff\1\141\2\uffff\1\145\1\156\1\145\3\172\1\156\1\154\1\164\1\145\1\165\1\164\1\147\1\uffff\1\143\1\111\1\117\1\172\1\uffff\1\165\1\164\1\156\1\141\1\172\2\uffff\1\155\1\164\1\145\1\172\1\uffff\1\122\1\151\1\164\1\172\1\166\1\164\1\172\1\141\1\151\2\172\1\141\1\uffff\1\145\1\uffff\2\143\1\164\1\141\1\162\1\142\1\uffff\1\143\2\uffff\1\157\1\145\1\172\2\162\1\172\1\145\1\141\1\164\1\154\2\142\1\uffff\1\162\1\172\2\147\1\uffff\1\160\1\151\1\156\1\uffff\1\165\1\156\1\172\1\uffff\1\145\1\171\1\uffff\1\156\1\157\2\uffff\2\172\1\153\1\151\1\145\1\156\1\162\1\152\1\164\1\163\1\172\1\uffff\1\141\1\145\1\142\1\uffff\1\162\1\164\1\145\1\141\2\152\1\143\1\142\1\uffff\1\172\1\145\1\157\1\166\1\144\1\154\1\147\1\uffff\2\172\1\147\1\156\2\uffff\1\172\1\155\1\147\1\172\1\141\2\145\1\164\1\142\1\uffff\1\164\1\115\1\152\1\117\1\151\1\162\1\163\3\145\1\152\1\uffff\1\111\1\162\3\145\1\106\2\uffff\1\154\1\163\1\uffff\1\141\1\145\1\142\1\uffff\1\171\1\143\1\162\1\151\1\152\1\157\1\141\1\145\1\142\1\157\1\141\1\163\2\143\1\172\1\145\1\155\1\164\1\115\1\156\1\172\1\157\1\151\1\172\1\162\1\154\1\162\1\152\1\172\1\164\1\117\1\143\1\145\1\162\1\160\1\143\1\152\1\156\1\164\1\172\2\164\1\145\1\uffff\1\143\1\160\1\172\1\141\1\164\1\uffff\1\162\1\156\1\uffff\1\141\2\172\1\145\1\uffff\1\172\1\142\1\103\1\143\2\172\1\164\1\145\1\124\1\157\1\uffff\2\172\2\164\1\157\1\uffff\1\164\1\172\1\155\1\147\1\160\2\uffff\1\143\1\uffff\1\152\1\150\1\164\1\uffff\1\156\1\uffff\1\172\1\143\1\141\1\162\2\uffff\2\172\1\162\1\143\1\uffff\1\165\1\172\1\150\1\164\1\145\1\141\1\172\1\164\1\uffff\1\164\1\162\1\172\2\uffff\1\164\1\150\1\154\1\uffff\2\172\1\143\1\151\1\uffff\1\162\1\172\1\147\1\uffff\1\172\1\151\1\141\2\uffff\1\164\1\156\1\171\1\uffff\1\145\1\uffff\1\156\4\172\1\164\1\147\4\uffff\1\105\1\172\1\170\1\uffff\1\143\1\145\1\160\1\164\1\151\1\157\1\156\1\172\1\uffff";
+        "\1\uffff\2\162\1\145\1\157\1\165\1\125\1\117\1\162\4\75\1\uffff\1\57\1\116\1\101\1\124\1\154\6\uffff\1\156\1\141\1\156\2\uffff\1\162\1\76\1\uffff\1\157\1\165\1\116\1\164\1\150\1\uffff\1\71\1\172\1\uffff\2\uffff\2\uffff\1\151\1\uffff\2\145\1\156\1\154\1\162\1\154\1\165\2\154\1\172\1\124\1\122\1\165\1\145\14\uffff\1\172\1\122\1\171\1\150\1\157\1\156\1\154\1\156\1\162\1\141\1\157\1\141\1\145\1\164\1\141\1\147\1\163\6\uffff\1\151\1\166\1\152\1\172\2\uffff\1\141\1\uffff\1\71\2\uffff\1\144\1\154\1\164\1\104\1\162\1\164\1\151\2\uffff\1\71\3\uffff\1\163\1\157\1\141\1\143\1\144\1\145\1\172\1\163\1\165\1\163\1\145\1\154\1\uffff\2\172\1\145\1\156\1\125\1\uffff\1\172\1\147\1\157\1\164\1\141\1\164\1\141\1\165\1\151\1\165\1\141\1\157\1\166\1\145\1\166\1\156\1\160\1\163\1\157\1\162\1\143\2\145\1\164\1\141\2\145\1\uffff\1\160\1\uffff\1\145\1\164\1\143\1\172\1\151\1\172\1\154\1\145\1\162\1\164\1\153\1\151\1\164\1\151\1\165\1\uffff\1\145\1\151\1\145\1\172\1\142\2\uffff\2\172\1\124\1\uffff\1\111\1\154\1\145\1\162\1\145\1\147\1\142\1\163\1\155\1\164\1\141\1\172\1\157\1\145\1\141\1\147\1\172\1\157\1\162\1\151\1\153\1\163\2\172\1\111\1\143\1\160\1\150\1\172\1\151\1\150\1\uffff\1\143\1\uffff\1\145\1\162\1\151\1\145\1\104\1\164\1\145\1\144\1\154\1\172\1\162\1\172\1\uffff\1\141\2\uffff\1\172\1\145\1\156\1\145\3\172\1\156\1\154\1\164\1\145\1\165\1\164\1\147\1\uffff\1\143\1\111\1\117\1\172\1\uffff\1\165\1\164\1\156\1\141\1\172\2\uffff\1\155\1\164\1\145\1\172\1\uffff\1\122\1\151\1\164\1\172\1\166\1\164\1\172\1\141\1\151\2\172\1\141\1\uffff\1\145\1\uffff\1\143\1\uffff\1\143\1\164\1\141\1\162\1\142\1\uffff\1\143\2\uffff\1\157\1\145\1\172\2\162\1\172\1\145\1\141\1\164\1\154\2\142\1\uffff\1\162\1\172\2\147\1\uffff\1\160\1\151\1\156\1\uffff\1\165\1\156\1\172\1\uffff\1\145\1\171\1\uffff\1\156\1\157\2\uffff\2\172\1\153\1\151\1\145\1\156\1\162\1\152\1\164\1\163\1\172\1\uffff\1\141\1\145\1\142\1\uffff\1\162\1\164\1\145\1\141\2\152\1\143\1\142\1\uffff\1\172\1\145\1\157\1\166\1\144\1\154\1\147\1\uffff\2\172\1\147\1\156\2\uffff\1\172\1\155\1\147\1\172\1\141\2\145\1\164\1\142\1\uffff\1\164\1\115\1\152\1\117\1\151\1\162\1\163\3\145\1\152\1\uffff\1\111\1\162\3\145\1\106\2\uffff\1\154\1\163\1\uffff\1\141\1\145\1\142\1\uffff\1\171\1\143\1\162\1\151\1\152\1\157\1\141\1\145\1\142\1\157\1\141\1\163\2\143\1\172\1\145\1\155\1\164\1\115\1\156\1\172\1\157\1\151\1\172\1\162\1\154\1\162\1\152\1\172\1\164\1\117\1\143\1\145\1\162\1\160\1\143\1\152\1\156\1\164\1\172\2\164\1\145\1\uffff\1\143\1\160\1\172\1\141\1\164\1\uffff\1\162\1\156\1\uffff\1\141\2\172\1\145\1\uffff\1\172\1\142\1\103\1\143\2\172\1\164\1\145\1\124\1\157\1\uffff\2\172\2\164\1\157\1\uffff\1\164\1\172\1\155\1\147\1\160\2\uffff\1\143\1\uffff\1\152\1\150\1\164\1\uffff\1\156\1\uffff\1\172\1\143\1\141\1\162\2\uffff\2\172\1\162\1\143\1\uffff\1\165\1\172\1\150\1\164\1\145\1\141\1\172\1\164\1\uffff\1\164\1\162\1\172\2\uffff\1\164\1\150\1\154\1\uffff\2\172\1\143\1\151\1\uffff\1\162\1\172\1\147\1\uffff\1\172\1\151\1\141\2\uffff\1\164\1\156\1\171\1\uffff\1\145\1\uffff\1\156\4\172\1\164\1\147\4\uffff\1\105\1\172\1\170\1\uffff\1\143\1\145\1\160\1\164\1\151\1\157\1\156\1\172\1\uffff";
     static final String DFA16_acceptS =
-        "\15\uffff\1\20\3\uffff\1\64\1\66\1\67\1\70\1\71\1\72\3\uffff\1\100\1\101\2\uffff\1\105\5\uffff\1\130\2\uffff\1\135\2\uffff\1\142\1\143\1\uffff\1\135\15\uffff\1\12\1\110\1\13\1\115\1\14\1\16\1\15\1\17\1\20\1\140\1\141\1\21\17\uffff\1\64\1\66\1\67\1\70\1\71\1\72\4\uffff\1\100\1\101\1\uffff\1\104\1\131\1\uffff\1\105\7\uffff\1\130\1\136\1\uffff\1\133\1\137\1\142\14\uffff\1\6\35\uffff\1\122\1\uffff\1\134\17\uffff\1\126\5\uffff\1\7\41\uffff\1\114\1\uffff\1\132\14\uffff\1\65\1\uffff\1\10\1\123\15\uffff\1\45\4\uffff\1\55\5\uffff\1\124\1\73\4\uffff\1\106\14\uffff\1\11\1\uffff\1\107\6\uffff\1\26\1\uffff\1\31\1\33\14\uffff\1\53\4\uffff\1\103\3\uffff\1\102\3\uffff\1\127\2\uffff\1\2\2\uffff\1\3\1\4\13\uffff\1\37\3\uffff\1\43\10\uffff\1\60\7\uffff\1\117\4\uffff\1\113\1\5\11\uffff\1\35\13\uffff\1\62\6\uffff\1\1\1\125\2\uffff\1\120\3\uffff\1\24\53\uffff\1\56\5\uffff\1\111\2\uffff\1\77\4\uffff\1\27\12\uffff\1\51\5\uffff\1\74\5\uffff\1\22\1\23\1\uffff\1\30\3\uffff\1\40\1\uffff\1\41\4\uffff\1\52\1\54\4\uffff\1\121\10\uffff\1\44\3\uffff\1\57\1\61\3\uffff\1\75\4\uffff\1\36\3\uffff\1\47\3\uffff\1\116\1\25\3\uffff\1\46\1\uffff\1\63\7\uffff\1\112\1\32\1\34\1\42\3\uffff\1\76\10\uffff\1\50";
+        "\15\uffff\1\20\5\uffff\1\70\1\72\1\73\1\74\1\75\1\76\3\uffff\1\104\1\105\2\uffff\1\111\5\uffff\1\134\2\uffff\1\141\2\uffff\1\146\1\147\1\uffff\1\141\16\uffff\1\12\1\114\1\13\1\121\1\14\1\16\1\15\1\17\1\20\1\144\1\145\1\21\21\uffff\1\70\1\72\1\73\1\74\1\75\1\76\4\uffff\1\104\1\105\1\uffff\1\110\1\uffff\1\135\1\111\7\uffff\1\134\1\142\1\uffff\1\137\1\143\1\146\14\uffff\1\6\5\uffff\1\22\33\uffff\1\126\1\uffff\1\140\17\uffff\1\132\5\uffff\1\23\1\7\3\uffff\1\25\37\uffff\1\120\1\uffff\1\136\14\uffff\1\71\1\uffff\1\10\1\127\16\uffff\1\51\4\uffff\1\61\5\uffff\1\130\1\77\4\uffff\1\112\14\uffff\1\11\1\uffff\1\113\1\uffff\1\24\5\uffff\1\32\1\uffff\1\35\1\37\14\uffff\1\57\4\uffff\1\107\3\uffff\1\106\3\uffff\1\133\2\uffff\1\2\2\uffff\1\3\1\4\13\uffff\1\43\3\uffff\1\47\10\uffff\1\64\7\uffff\1\123\4\uffff\1\117\1\5\11\uffff\1\41\13\uffff\1\66\6\uffff\1\1\1\131\2\uffff\1\124\3\uffff\1\30\53\uffff\1\62\5\uffff\1\115\2\uffff\1\103\4\uffff\1\33\12\uffff\1\55\5\uffff\1\100\5\uffff\1\26\1\27\1\uffff\1\34\3\uffff\1\44\1\uffff\1\45\4\uffff\1\56\1\60\4\uffff\1\125\10\uffff\1\50\3\uffff\1\63\1\65\3\uffff\1\101\4\uffff\1\42\3\uffff\1\53\3\uffff\1\122\1\31\3\uffff\1\52\1\uffff\1\67\7\uffff\1\116\1\36\1\40\1\46\3\uffff\1\102\10\uffff\1\54";
     static final String DFA16_specialS =
-        "\1\2\47\uffff\1\0\1\1\u0209\uffff}>";
+        "\1\0\51\uffff\1\1\1\2\u0215\uffff}>";
     static final String[] DFA16_transitionS = {
-            "\11\53\2\52\2\53\1\52\22\53\1\52\1\12\1\50\4\53\1\51\1\22\1\23\1\15\1\44\1\26\1\35\1\21\1\16\12\45\1\36\1\53\1\14\1\11\1\13\2\53\1\41\3\47\1\17\11\47\1\6\10\47\1\7\2\47\1\32\1\53\1\33\1\46\1\47\1\53\2\47\1\2\1\3\1\20\1\4\1\34\1\47\1\31\1\30\2\47\1\40\1\37\1\47\1\1\1\47\1\5\1\42\1\10\1\27\1\47\1\43\3\47\1\24\1\53\1\25\uff82\53",
-            "\1\54",
-            "\1\57\6\uffff\1\60\2\uffff\1\56",
-            "\1\61",
-            "\1\63\15\uffff\1\62",
-            "\1\64\11\uffff\1\66\5\uffff\1\65",
-            "\1\67",
-            "\1\70",
-            "\1\72\11\uffff\1\71",
+            "\11\55\2\54\2\55\1\54\22\55\1\54\1\12\1\52\4\55\1\53\1\24\1\25\1\15\1\46\1\30\1\37\1\23\1\16\12\47\1\40\1\55\1\14\1\11\1\13\2\55\1\43\3\51\1\21\3\51\1\17\5\51\1\6\6\51\1\20\1\51\1\7\2\51\1\34\1\55\1\35\1\50\1\51\1\55\2\51\1\2\1\3\1\22\1\4\1\36\1\51\1\33\1\32\2\51\1\42\1\41\1\51\1\1\1\51\1\5\1\44\1\10\1\31\1\51\1\45\3\51\1\26\1\55\1\27\uff82\55",
+            "\1\56",
+            "\1\61\6\uffff\1\62\2\uffff\1\60",
+            "\1\63",
+            "\1\65\15\uffff\1\64",
+            "\1\66\11\uffff\1\70\5\uffff\1\67",
+            "\1\71\2\uffff\1\72",
             "\1\73",
-            "\1\75",
-            "\1\77",
-            "\1\101",
+            "\1\75\11\uffff\1\74",
+            "\1\76",
+            "\1\100",
+            "\1\102",
+            "\1\104",
             "",
-            "\1\104\4\uffff\1\105",
-            "\1\107\1\110\1\111\1\112\1\113\2\uffff\1\114\1\116\1\uffff\1\117\1\120\4\uffff\1\121\1\122\1\115",
-            "\1\123\23\uffff\1\124\7\uffff\1\125",
+            "\1\107\4\uffff\1\110",
+            "\1\112",
+            "\1\113",
+            "\1\114\1\115\1\116\1\117\1\120\2\uffff\1\121\1\123\1\uffff\1\124\1\125\4\uffff\1\126\1\127\1\122",
+            "\1\130\23\uffff\1\131\7\uffff\1\132",
             "",
             "",
             "",
             "",
             "",
             "",
-            "\1\134",
-            "\1\135",
-            "\1\137\7\uffff\1\136",
-            "",
-            "",
+            "\1\141",
             "\1\142",
-            "\12\145\4\uffff\1\143",
+            "\1\144\7\uffff\1\143",
+            "",
             "",
             "\1\147",
-            "\1\151\23\uffff\1\150",
-            "\1\152",
-            "\1\154\16\uffff\1\153",
-            "\1\155",
+            "\12\151\4\uffff\1\150",
             "",
-            "\1\161\1\uffff\12\160",
-            "\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\154",
+            "\1\156\23\uffff\1\155",
+            "\1\157",
+            "\1\161\16\uffff\1\160",
+            "\1\162",
             "",
-            "\0\162",
-            "\0\162",
+            "\1\166\1\uffff\12\165",
+            "\32\57\4\uffff\1\57\1\uffff\32\57",
+            "",
+            "\0\167",
+            "\0\167",
             "",
             "",
-            "\1\164\3\uffff\1\165",
+            "\1\171\3\uffff\1\172",
             "",
-            "\1\166",
-            "\1\167",
-            "\1\170",
-            "\1\171",
-            "\1\172",
             "\1\173",
-            "\1\174\3\uffff\1\175",
+            "\1\174",
+            "\1\175",
             "\1\176",
             "\1\177",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u0081",
-            "\1\u0082",
+            "\1\u0080",
+            "\1\u0081\3\uffff\1\u0082",
             "\1\u0083",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u0084\5\uffff\1\u0085\11\uffff\1\u0086",
+            "\1\u0084",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0086",
             "\1\u0087",
-            "\1\u0088\7\uffff\1\u0089\5\uffff\1\u008a",
-            "\1\u008b\41\uffff\1\u008c",
-            "\1\u008d\6\uffff\1\u008e",
-            "\1\u008f",
+            "\1\u0088",
+            "\1\u0089",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\12\57\7\uffff\16\57\1\u008a\13\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u008c",
+            "\1\u008d\5\uffff\1\u008e\11\uffff\1\u008f",
             "\1\u0090",
-            "\1\u0091",
-            "\1\u0092",
-            "\1\u0093",
-            "\1\u0094",
-            "\1\u0095\13\uffff\1\u0096",
-            "\1\u0097",
+            "\1\u0091\7\uffff\1\u0092\5\uffff\1\u0093",
+            "\1\u0094\41\uffff\1\u0095",
+            "\1\u0096\6\uffff\1\u0097",
             "\1\u0098",
             "\1\u0099",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
             "\1\u009a",
             "\1\u009b",
-            "\1\u009d\5\uffff\1\u009c",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "",
-            "",
-            "\1\u009f",
-            "",
-            "",
-            "\1\161\1\uffff\12\145",
-            "",
+            "\1\u009c",
+            "\1\u009d",
+            "\1\u009e\13\uffff\1\u009f",
+            "\1\u00a0",
             "\1\u00a1",
             "\1\u00a2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00a3",
             "\1\u00a4",
-            "\1\u00a5",
-            "\1\u00a6",
-            "\1\u00a7",
-            "",
-            "",
-            "\1\161\1\uffff\12\160",
-            "",
+            "\1\u00a6\5\uffff\1\u00a5",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "",
             "",
             "\1\u00a8",
-            "\1\u00a9",
+            "",
+            "\1\166\1\uffff\12\151",
+            "",
+            "",
             "\1\u00aa",
             "\1\u00ab",
             "\1\u00ac",
             "\1\u00ad",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\1\55\1\u00ae\12\55\1\u00af\15\55",
+            "\1\u00ae",
+            "\1\u00af",
+            "\1\u00b0",
+            "",
+            "",
+            "\1\166\1\uffff\12\165",
+            "",
+            "",
+            "",
             "\1\u00b1",
             "\1\u00b2",
             "\1\u00b3",
             "\1\u00b4",
             "\1\u00b5",
-            "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u00b7",
-            "\1\u00b8",
-            "\1\u00b9",
+            "\1\u00b6",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\1\57\1\u00b7\12\57\1\u00b8\15\57",
             "\1\u00ba",
             "\1\u00bb",
             "\1\u00bc",
             "\1\u00bd",
             "\1\u00be",
-            "\1\u00bf",
-            "\1\u00c0",
+            "",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u00c1",
             "\1\u00c2",
             "\1\u00c3",
-            "\1\u00c4\1\uffff\1\u00c5",
+            "",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u00c5",
             "\1\u00c6",
             "\1\u00c7",
             "\1\u00c8",
@@ -3517,150 +3631,150 @@
             "\1\u00cd",
             "\1\u00ce",
             "\1\u00cf",
-            "\1\u00d0",
-            "\1\u00d1",
+            "\1\u00d0\1\uffff\1\u00d1",
             "\1\u00d2",
             "\1\u00d3",
-            "",
             "\1\u00d4",
-            "",
             "\1\u00d5",
             "\1\u00d6",
             "\1\u00d7",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u00d8",
             "\1\u00d9",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u00da",
             "\1\u00db",
             "\1\u00dc",
             "\1\u00dd",
             "\1\u00de",
             "\1\u00df",
+            "",
             "\1\u00e0",
+            "",
             "\1\u00e1",
             "\1\u00e2",
             "\1\u00e3",
-            "",
-            "\1\u00e4",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u00e5",
-            "\1\u00e6",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u00e7",
             "\1\u00e8",
-            "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u00eb\4\uffff\1\u00ec",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
             "\1\u00ed",
             "\1\u00ee",
             "\1\u00ef",
+            "",
             "\1\u00f0",
             "\1\u00f1",
             "\1\u00f2",
-            "\1\u00f3",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u00f4",
-            "\1\u00f5",
-            "\1\u00f6",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\4\55\1\u00f7\25\55",
-            "\1\u00f9",
+            "",
+            "",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u00f7",
+            "",
+            "\1\u00f8\4\uffff\1\u00f9",
             "\1\u00fa",
             "\1\u00fb",
             "\1\u00fc",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u00fd",
             "\1\u00fe",
             "\1\u00ff",
             "\1\u0100",
             "\1\u0101",
             "\1\u0102",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u0105",
+            "\1\u0103",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\4\57\1\u0104\25\57",
             "\1\u0106",
             "\1\u0107",
             "\1\u0108",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u010a",
+            "\1\u0109",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u010b",
-            "",
             "\1\u010c",
-            "",
             "\1\u010d",
             "\1\u010e",
             "\1\u010f",
-            "\1\u0110",
-            "\1\u0111",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0112",
             "\1\u0113",
             "\1\u0114",
             "\1\u0115",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0117",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u0118",
             "",
             "\1\u0119",
             "",
-            "",
             "\1\u011a",
             "\1\u011b",
             "\1\u011c",
-            "\12\55\7\uffff\1\u011d\15\55\1\u011e\13\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\1\u0120\31\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u0123",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0124",
-            "\1\u0125",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "",
             "\1\u0126",
-            "\1\u0127",
+            "",
+            "",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0128",
             "\1\u0129",
-            "",
             "\1\u012a",
-            "\1\u012b",
-            "\1\u012c\13\uffff\1\u012d",
-            "\12\55\7\uffff\16\55\1\u012e\13\55\4\uffff\1\55\1\uffff\32\55",
-            "",
-            "\1\u0130",
+            "\12\57\7\uffff\1\u012b\15\57\1\u012c\13\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\1\u012e\31\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0131",
             "\1\u0132",
             "\1\u0133",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "",
-            "",
+            "\1\u0134",
             "\1\u0135",
             "\1\u0136",
             "\1\u0137",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
             "",
+            "\1\u0138",
             "\1\u0139",
-            "\1\u013a",
-            "\1\u013b",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u013d",
+            "\1\u013a\13\uffff\1\u013b",
+            "\12\57\7\uffff\16\57\1\u013c\13\57\4\uffff\1\57\1\uffff\32\57",
+            "",
             "\1\u013e",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u013f",
             "\1\u0140",
             "\1\u0141",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "",
+            "",
+            "\1\u0143",
             "\1\u0144",
-            "",
             "\1\u0145",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "",
-            "\1\u0146",
             "\1\u0147",
             "\1\u0148",
             "\1\u0149",
-            "\1\u014a",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u014b",
-            "",
             "\1\u014c",
-            "",
-            "",
-            "\1\u014d",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u014e",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u0150",
-            "\1\u0151",
-            "\12\55\7\uffff\16\55\1\u0152\13\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u014f",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0152",
+            "",
+            "\1\u0153",
+            "",
             "\1\u0154",
+            "",
             "\1\u0155",
             "\1\u0156",
             "\1\u0157",
@@ -3668,42 +3782,43 @@
             "\1\u0159",
             "",
             "\1\u015a",
-            "\12\55\7\uffff\16\55\1\u015b\13\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u015d",
+            "",
+            "",
+            "\1\u015b",
+            "\1\u015c",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u015e",
-            "",
             "\1\u015f",
-            "\1\u0160",
-            "\1\u0161",
-            "",
+            "\12\57\7\uffff\16\57\1\u0160\13\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0162",
             "\1\u0163",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "",
+            "\1\u0164",
             "\1\u0165",
             "\1\u0166",
-            "",
             "\1\u0167",
+            "",
             "\1\u0168",
-            "",
-            "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\12\57\7\uffff\16\57\1\u0169\13\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u016b",
             "\1\u016c",
+            "",
             "\1\u016d",
             "\1\u016e",
             "\1\u016f",
+            "",
             "\1\u0170",
             "\1\u0171",
-            "\1\u0172",
-            "\12\55\7\uffff\16\55\1\u0173\13\55\4\uffff\1\55\1\uffff\32\55",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "",
+            "\1\u0173",
+            "\1\u0174",
             "",
             "\1\u0175",
             "\1\u0176",
-            "\1\u0177",
             "",
-            "\1\u0178",
+            "",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0179",
             "\1\u017a",
             "\1\u017b",
@@ -3711,220 +3826,235 @@
             "\1\u017d",
             "\1\u017e",
             "\1\u017f",
+            "\1\u0180",
+            "\12\57\7\uffff\16\57\1\u0181\13\57\4\uffff\1\57\1\uffff\32\57",
             "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u0181",
-            "\1\u0182",
             "\1\u0183",
             "\1\u0184",
             "\1\u0185",
-            "\1\u0186",
             "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
             "\1\u0189",
             "\1\u018a",
-            "",
-            "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u018b",
             "\1\u018c",
             "\1\u018d",
-            "\12\55\7\uffff\16\55\1\u018e\13\55\4\uffff\1\55\1\uffff\32\55",
+            "",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u018f",
             "\1\u0190",
             "\1\u0191",
             "\1\u0192",
             "\1\u0193",
             "\1\u0194",
             "",
-            "\1\u0195",
-            "\1\u0196",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0197",
             "\1\u0198",
-            "\1\u0199",
+            "",
+            "",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u019a",
             "\1\u019b",
-            "\1\u019c",
-            "\1\u019d",
+            "\12\57\7\uffff\16\57\1\u019c\13\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u019e",
             "\1\u019f",
-            "",
             "\1\u01a0",
             "\1\u01a1",
             "\1\u01a2",
+            "",
             "\1\u01a3",
             "\1\u01a4",
             "\1\u01a5",
-            "",
-            "",
             "\1\u01a6",
-            "\1\u01a8\53\uffff\1\u01a7",
-            "",
+            "\1\u01a7",
+            "\1\u01a8",
             "\1\u01a9",
             "\1\u01aa",
             "\1\u01ab",
-            "",
             "\1\u01ac",
             "\1\u01ad",
+            "",
             "\1\u01ae",
             "\1\u01af",
             "\1\u01b0",
             "\1\u01b1",
             "\1\u01b2",
             "\1\u01b3",
+            "",
+            "",
             "\1\u01b4",
-            "\1\u01b5",
-            "\1\u01b6",
+            "\1\u01b6\53\uffff\1\u01b5",
+            "",
             "\1\u01b7",
             "\1\u01b8",
             "\1\u01b9",
-            "\12\55\7\uffff\22\55\1\u01ba\7\55\4\uffff\1\55\1\uffff\32\55",
+            "",
+            "\1\u01ba",
+            "\1\u01bb",
             "\1\u01bc",
             "\1\u01bd",
             "\1\u01be",
             "\1\u01bf",
             "\1\u01c0",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u01c1",
             "\1\u01c2",
             "\1\u01c3",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u01c4",
             "\1\u01c5",
             "\1\u01c6",
             "\1\u01c7",
-            "\1\u01c8",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\12\57\7\uffff\22\57\1\u01c8\7\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u01ca",
             "\1\u01cb",
             "\1\u01cc",
             "\1\u01cd",
             "\1\u01ce",
-            "\1\u01cf",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u01d0",
             "\1\u01d1",
-            "\1\u01d2",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u01d3",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u01d4",
             "\1\u01d5",
             "\1\u01d6",
-            "\1\u01d7",
-            "",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u01d8",
             "\1\u01d9",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u01da",
             "\1\u01db",
             "\1\u01dc",
-            "",
             "\1\u01dd",
             "\1\u01de",
-            "",
             "\1\u01df",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u01e2",
-            "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u01e3",
             "\1\u01e4",
             "\1\u01e5",
+            "",
             "\1\u01e6",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\4\55\1\u01e8\25\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u01e7",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u01e9",
             "\1\u01ea",
+            "",
             "\1\u01eb",
             "\1\u01ec",
+            "",
             "\1\u01ed",
-            "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u01f0",
-            "\1\u01f1",
+            "",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u01f2",
-            "",
             "\1\u01f3",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u01f5",
-            "\1\u01f6",
-            "\1\u01f7",
-            "",
-            "",
+            "\1\u01f4",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\4\57\1\u01f6\25\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u01f8",
-            "",
             "\1\u01f9",
             "\1\u01fa",
             "\1\u01fb",
             "",
-            "\1\u01fc",
-            "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u01fe",
             "\1\u01ff",
             "\1\u0200",
             "",
-            "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u0201",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0203",
             "\1\u0204",
-            "",
             "\1\u0205",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "",
+            "",
+            "\1\u0206",
+            "",
             "\1\u0207",
             "\1\u0208",
             "\1\u0209",
-            "\1\u020a",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u020c",
             "",
+            "\1\u020a",
+            "",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u020c",
             "\1\u020d",
             "\1\u020e",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
             "",
             "",
-            "\1\u0210",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0211",
             "\1\u0212",
             "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\1\u0213",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0215",
             "\1\u0216",
-            "",
             "\1\u0217",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u0219",
+            "\1\u0218",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u021a",
             "",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
             "\1\u021b",
             "\1\u021c",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "",
             "",
-            "\1\u021d",
             "\1\u021e",
             "\1\u021f",
-            "",
             "\1\u0220",
             "",
-            "\1\u0221",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
-            "\1\u0226",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0223",
+            "\1\u0224",
+            "",
+            "\1\u0225",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0227",
             "",
-            "",
-            "",
-            "",
-            "\1\u0228",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0229",
             "\1\u022a",
             "",
+            "",
             "\1\u022b",
             "\1\u022c",
             "\1\u022d",
+            "",
             "\1\u022e",
+            "",
             "\1\u022f",
-            "\1\u0230",
-            "\1\u0231",
-            "\12\55\7\uffff\32\55\4\uffff\1\55\1\uffff\32\55",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0234",
+            "\1\u0235",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0236",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0238",
+            "",
+            "\1\u0239",
+            "\1\u023a",
+            "\1\u023b",
+            "\1\u023c",
+            "\1\u023d",
+            "\1\u023e",
+            "\1\u023f",
+            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             ""
     };
 
@@ -3958,33 +4088,13 @@
             this.transition = DFA16_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | RULE_DECIMAL | RULE_NEGATIVE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | RULE_DECIMAL | RULE_NEGATIVE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             IntStream input = _input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA16_40 = input.LA(1);
-
-                        s = -1;
-                        if ( ((LA16_40>='\u0000' && LA16_40<='\uFFFF')) ) {s = 114;}
-
-                        else s = 43;
-
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA16_41 = input.LA(1);
-
-                        s = -1;
-                        if ( ((LA16_41>='\u0000' && LA16_41<='\uFFFF')) ) {s = 114;}
-
-                        else s = 43;
-
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
                         int LA16_0 = input.LA(1);
 
                         s = -1;
@@ -4016,63 +4126,87 @@
 
                         else if ( (LA16_0=='/') ) {s = 14;}
 
-                        else if ( (LA16_0=='E') ) {s = 15;}
+                        else if ( (LA16_0=='I') ) {s = 15;}
 
-                        else if ( (LA16_0=='e') ) {s = 16;}
+                        else if ( (LA16_0=='V') ) {s = 16;}
 
-                        else if ( (LA16_0=='.') ) {s = 17;}
+                        else if ( (LA16_0=='E') ) {s = 17;}
 
-                        else if ( (LA16_0=='(') ) {s = 18;}
+                        else if ( (LA16_0=='e') ) {s = 18;}
 
-                        else if ( (LA16_0==')') ) {s = 19;}
+                        else if ( (LA16_0=='.') ) {s = 19;}
 
-                        else if ( (LA16_0=='{') ) {s = 20;}
+                        else if ( (LA16_0=='(') ) {s = 20;}
 
-                        else if ( (LA16_0=='}') ) {s = 21;}
+                        else if ( (LA16_0==')') ) {s = 21;}
 
-                        else if ( (LA16_0==',') ) {s = 22;}
+                        else if ( (LA16_0=='{') ) {s = 22;}
 
-                        else if ( (LA16_0=='u') ) {s = 23;}
+                        else if ( (LA16_0=='}') ) {s = 23;}
 
-                        else if ( (LA16_0=='j') ) {s = 24;}
+                        else if ( (LA16_0==',') ) {s = 24;}
 
-                        else if ( (LA16_0=='i') ) {s = 25;}
+                        else if ( (LA16_0=='u') ) {s = 25;}
 
-                        else if ( (LA16_0=='[') ) {s = 26;}
+                        else if ( (LA16_0=='j') ) {s = 26;}
 
-                        else if ( (LA16_0==']') ) {s = 27;}
+                        else if ( (LA16_0=='i') ) {s = 27;}
 
-                        else if ( (LA16_0=='g') ) {s = 28;}
+                        else if ( (LA16_0=='[') ) {s = 28;}
 
-                        else if ( (LA16_0=='-') ) {s = 29;}
+                        else if ( (LA16_0==']') ) {s = 29;}
 
-                        else if ( (LA16_0==':') ) {s = 30;}
+                        else if ( (LA16_0=='g') ) {s = 30;}
 
-                        else if ( (LA16_0=='n') ) {s = 31;}
+                        else if ( (LA16_0=='-') ) {s = 31;}
 
-                        else if ( (LA16_0=='m') ) {s = 32;}
+                        else if ( (LA16_0==':') ) {s = 32;}
 
-                        else if ( (LA16_0=='A') ) {s = 33;}
+                        else if ( (LA16_0=='n') ) {s = 33;}
 
-                        else if ( (LA16_0=='s') ) {s = 34;}
+                        else if ( (LA16_0=='m') ) {s = 34;}
 
-                        else if ( (LA16_0=='w') ) {s = 35;}
+                        else if ( (LA16_0=='A') ) {s = 35;}
 
-                        else if ( (LA16_0=='+') ) {s = 36;}
+                        else if ( (LA16_0=='s') ) {s = 36;}
 
-                        else if ( ((LA16_0>='0' && LA16_0<='9')) ) {s = 37;}
+                        else if ( (LA16_0=='w') ) {s = 37;}
 
-                        else if ( (LA16_0=='^') ) {s = 38;}
+                        else if ( (LA16_0=='+') ) {s = 38;}
 
-                        else if ( ((LA16_0>='B' && LA16_0<='D')||(LA16_0>='F' && LA16_0<='N')||(LA16_0>='P' && LA16_0<='W')||(LA16_0>='Y' && LA16_0<='Z')||LA16_0=='_'||(LA16_0>='a' && LA16_0<='b')||LA16_0=='h'||(LA16_0>='k' && LA16_0<='l')||LA16_0=='o'||LA16_0=='q'||LA16_0=='v'||(LA16_0>='x' && LA16_0<='z')) ) {s = 39;}
+                        else if ( ((LA16_0>='0' && LA16_0<='9')) ) {s = 39;}
 
-                        else if ( (LA16_0=='\"') ) {s = 40;}
+                        else if ( (LA16_0=='^') ) {s = 40;}
 
-                        else if ( (LA16_0=='\'') ) {s = 41;}
+                        else if ( ((LA16_0>='B' && LA16_0<='D')||(LA16_0>='F' && LA16_0<='H')||(LA16_0>='J' && LA16_0<='N')||(LA16_0>='P' && LA16_0<='U')||LA16_0=='W'||(LA16_0>='Y' && LA16_0<='Z')||LA16_0=='_'||(LA16_0>='a' && LA16_0<='b')||LA16_0=='h'||(LA16_0>='k' && LA16_0<='l')||LA16_0=='o'||LA16_0=='q'||LA16_0=='v'||(LA16_0>='x' && LA16_0<='z')) ) {s = 41;}
 
-                        else if ( ((LA16_0>='\t' && LA16_0<='\n')||LA16_0=='\r'||LA16_0==' ') ) {s = 42;}
+                        else if ( (LA16_0=='\"') ) {s = 42;}
 
-                        else if ( ((LA16_0>='\u0000' && LA16_0<='\b')||(LA16_0>='\u000B' && LA16_0<='\f')||(LA16_0>='\u000E' && LA16_0<='\u001F')||(LA16_0>='#' && LA16_0<='&')||LA16_0==';'||(LA16_0>='?' && LA16_0<='@')||LA16_0=='\\'||LA16_0=='`'||LA16_0=='|'||(LA16_0>='~' && LA16_0<='\uFFFF')) ) {s = 43;}
+                        else if ( (LA16_0=='\'') ) {s = 43;}
+
+                        else if ( ((LA16_0>='\t' && LA16_0<='\n')||LA16_0=='\r'||LA16_0==' ') ) {s = 44;}
+
+                        else if ( ((LA16_0>='\u0000' && LA16_0<='\b')||(LA16_0>='\u000B' && LA16_0<='\f')||(LA16_0>='\u000E' && LA16_0<='\u001F')||(LA16_0>='#' && LA16_0<='&')||LA16_0==';'||(LA16_0>='?' && LA16_0<='@')||LA16_0=='\\'||LA16_0=='`'||LA16_0=='|'||(LA16_0>='~' && LA16_0<='\uFFFF')) ) {s = 45;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA16_42 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA16_42>='\u0000' && LA16_42<='\uFFFF')) ) {s = 119;}
+
+                        else s = 45;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA16_43 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA16_43>='\u0000' && LA16_43<='\uFFFF')) ) {s = 119;}
+
+                        else s = 45;
 
                         if ( s>=0 ) return s;
                         break;
diff --git a/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_textParser.java b/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_textParser.java
index 4f654b7..de9163d 100644
--- a/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_textParser.java
+++ b/plugins/org.eclipse.emf.henshin.text.ide/src-gen/org/eclipse/emf/henshin/text/ide/contentassist/antlr/internal/InternalHenshin_textParser.java
@@ -22,7 +22,7 @@
 @SuppressWarnings("all")
 public class InternalHenshin_textParser extends AbstractInternalContentAssistParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_DECIMAL", "RULE_NEGATIVE", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'preserve'", "'create'", "'delete'", "'forbid'", "'require'", "'OR'", "'XOR'", "'true'", "'false'", "'=='", "'!='", "'>='", "'<='", "'>'", "'<'", "'*'", "'/'", "'EBigDecimal'", "'EBigInteger'", "'EBoolean'", "'EBooleanObject'", "'EByte'", "'EByteArray'", "'EByteObject'", "'EChar'", "'ECharacterObject'", "'EDate'", "'EDiagnosticChain'", "'EDouble'", "'EDoubleObject'", "'EEList'", "'EEnumerator'", "'EFeatureMap'", "'EFeatureMapEntry'", "'EFloat'", "'EFloatObject'", "'EInt'", "'EIntegerObject'", "'ETreeIterator'", "'EInvocationTargetException'", "'EJavaClass'", "'EJavaObject'", "'ELong'", "'ELongObject'", "'EMap'", "'EResource'", "'EResourceSet'", "'EShort'", "'EShortObject'", "'EString'", "'ePackageImport'", "'.'", "'rule'", "'('", "')'", "'{'", "'}'", "','", "'unit'", "'javaImport'", "'checkDangling'", "'injectiveMatching'", "'conditions'", "'['", "']'", "'graph'", "'edges'", "'->'", "':'", "'node'", "'reuse'", "'='", "'multiRule'", "'matchingFormula'", "'formula'", "'AND'", "'!'", "'conditionGraph'", "'strict'", "'rollback'", "'independent'", "'if'", "'then'", "'else'", "'priority'", "'for'", "'while'", "'+'", "'-'", "'set'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_DECIMAL", "RULE_NEGATIVE", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'preserve'", "'create'", "'delete'", "'forbid'", "'require'", "'OR'", "'XOR'", "'true'", "'false'", "'=='", "'!='", "'>='", "'<='", "'>'", "'<'", "'*'", "'/'", "'IN'", "'OUT'", "'INOUT'", "'VAR'", "'EBigDecimal'", "'EBigInteger'", "'EBoolean'", "'EBooleanObject'", "'EByte'", "'EByteArray'", "'EByteObject'", "'EChar'", "'ECharacterObject'", "'EDate'", "'EDiagnosticChain'", "'EDouble'", "'EDoubleObject'", "'EEList'", "'EEnumerator'", "'EFeatureMap'", "'EFeatureMapEntry'", "'EFloat'", "'EFloatObject'", "'EInt'", "'EIntegerObject'", "'ETreeIterator'", "'EInvocationTargetException'", "'EJavaClass'", "'EJavaObject'", "'ELong'", "'ELongObject'", "'EMap'", "'EResource'", "'EResourceSet'", "'EShort'", "'EShortObject'", "'EString'", "'ePackageImport'", "'.'", "'rule'", "'('", "')'", "'{'", "'}'", "','", "'unit'", "'javaImport'", "'checkDangling'", "'injectiveMatching'", "'conditions'", "'['", "']'", "'graph'", "'edges'", "'->'", "':'", "'node'", "'reuse'", "'='", "'multiRule'", "'matchingFormula'", "'formula'", "'AND'", "'!'", "'conditionGraph'", "'strict'", "'rollback'", "'independent'", "'if'", "'then'", "'else'", "'priority'", "'for'", "'while'", "'+'", "'-'", "'set'"
     };
     public static final int T__50=50;
     public static final int T__59=59;
@@ -121,9 +121,13 @@
     public static final int T__88=88;
     public static final int T__89=89;
     public static final int T__84=84;
+    public static final int T__104=104;
     public static final int T__85=85;
+    public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
+    public static final int T__105=105;
 
     // delegates
     // delegators
@@ -2921,7 +2925,7 @@
                 int alt1=2;
                 int LA1_0 = input.LA(1);
 
-                if ( (LA1_0==RULE_ID||LA1_0==68||(LA1_0>=91 && LA1_0<=94)||(LA1_0>=97 && LA1_0<=99)) ) {
+                if ( (LA1_0==RULE_ID||LA1_0==72||(LA1_0>=95 && LA1_0<=98)||(LA1_0>=101 && LA1_0<=103)) ) {
                     alt1=1;
                 }
 
@@ -4349,22 +4353,69 @@
     // $ANTLR end "ruleJavaAttribute"
 
 
+    // $ANTLR start "ruleParameterKindRule"
+    // InternalHenshin_text.g:1410:1: ruleParameterKindRule : ( ( rule__ParameterKindRule__Alternatives ) ) ;
+    public final void ruleParameterKindRule() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalHenshin_text.g:1414:1: ( ( ( rule__ParameterKindRule__Alternatives ) ) )
+            // InternalHenshin_text.g:1415:2: ( ( rule__ParameterKindRule__Alternatives ) )
+            {
+            // InternalHenshin_text.g:1415:2: ( ( rule__ParameterKindRule__Alternatives ) )
+            // InternalHenshin_text.g:1416:3: ( rule__ParameterKindRule__Alternatives )
+            {
+             before(grammarAccess.getParameterKindRuleAccess().getAlternatives()); 
+            // InternalHenshin_text.g:1417:3: ( rule__ParameterKindRule__Alternatives )
+            // InternalHenshin_text.g:1417:4: rule__ParameterKindRule__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__ParameterKindRule__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getParameterKindRuleAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleParameterKindRule"
+
+
     // $ANTLR start "ruleType"
-    // InternalHenshin_text.g:1410:1: ruleType : ( ( rule__Type__Alternatives ) ) ;
+    // InternalHenshin_text.g:1426:1: ruleType : ( ( rule__Type__Alternatives ) ) ;
     public final void ruleType() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1414:1: ( ( ( rule__Type__Alternatives ) ) )
-            // InternalHenshin_text.g:1415:2: ( ( rule__Type__Alternatives ) )
+            // InternalHenshin_text.g:1430:1: ( ( ( rule__Type__Alternatives ) ) )
+            // InternalHenshin_text.g:1431:2: ( ( rule__Type__Alternatives ) )
             {
-            // InternalHenshin_text.g:1415:2: ( ( rule__Type__Alternatives ) )
-            // InternalHenshin_text.g:1416:3: ( rule__Type__Alternatives )
+            // InternalHenshin_text.g:1431:2: ( ( rule__Type__Alternatives ) )
+            // InternalHenshin_text.g:1432:3: ( rule__Type__Alternatives )
             {
              before(grammarAccess.getTypeAccess().getAlternatives()); 
-            // InternalHenshin_text.g:1417:3: ( rule__Type__Alternatives )
-            // InternalHenshin_text.g:1417:4: rule__Type__Alternatives
+            // InternalHenshin_text.g:1433:3: ( rule__Type__Alternatives )
+            // InternalHenshin_text.g:1433:4: rule__Type__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__Type__Alternatives();
@@ -4397,20 +4448,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Alternatives"
-    // InternalHenshin_text.g:1425:1: rule__ModelElement__Alternatives : ( ( ( rule__ModelElement__Group_0__0 ) ) | ( ( rule__ModelElement__Group_1__0 ) ) );
+    // InternalHenshin_text.g:1441:1: rule__ModelElement__Alternatives : ( ( ( rule__ModelElement__Group_0__0 ) ) | ( ( rule__ModelElement__Group_1__0 ) ) );
     public final void rule__ModelElement__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1429:1: ( ( ( rule__ModelElement__Group_0__0 ) ) | ( ( rule__ModelElement__Group_1__0 ) ) )
+            // InternalHenshin_text.g:1445:1: ( ( ( rule__ModelElement__Group_0__0 ) ) | ( ( rule__ModelElement__Group_1__0 ) ) )
             int alt2=2;
             int LA2_0 = input.LA(1);
 
-            if ( (LA2_0==65) ) {
+            if ( (LA2_0==69) ) {
                 alt2=1;
             }
-            else if ( (LA2_0==71) ) {
+            else if ( (LA2_0==75) ) {
                 alt2=2;
             }
             else {
@@ -4421,14 +4472,14 @@
             }
             switch (alt2) {
                 case 1 :
-                    // InternalHenshin_text.g:1430:2: ( ( rule__ModelElement__Group_0__0 ) )
+                    // InternalHenshin_text.g:1446:2: ( ( rule__ModelElement__Group_0__0 ) )
                     {
-                    // InternalHenshin_text.g:1430:2: ( ( rule__ModelElement__Group_0__0 ) )
-                    // InternalHenshin_text.g:1431:3: ( rule__ModelElement__Group_0__0 )
+                    // InternalHenshin_text.g:1446:2: ( ( rule__ModelElement__Group_0__0 ) )
+                    // InternalHenshin_text.g:1447:3: ( rule__ModelElement__Group_0__0 )
                     {
                      before(grammarAccess.getModelElementAccess().getGroup_0()); 
-                    // InternalHenshin_text.g:1432:3: ( rule__ModelElement__Group_0__0 )
-                    // InternalHenshin_text.g:1432:4: rule__ModelElement__Group_0__0
+                    // InternalHenshin_text.g:1448:3: ( rule__ModelElement__Group_0__0 )
+                    // InternalHenshin_text.g:1448:4: rule__ModelElement__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__ModelElement__Group_0__0();
@@ -4446,14 +4497,14 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1436:2: ( ( rule__ModelElement__Group_1__0 ) )
+                    // InternalHenshin_text.g:1452:2: ( ( rule__ModelElement__Group_1__0 ) )
                     {
-                    // InternalHenshin_text.g:1436:2: ( ( rule__ModelElement__Group_1__0 ) )
-                    // InternalHenshin_text.g:1437:3: ( rule__ModelElement__Group_1__0 )
+                    // InternalHenshin_text.g:1452:2: ( ( rule__ModelElement__Group_1__0 ) )
+                    // InternalHenshin_text.g:1453:3: ( rule__ModelElement__Group_1__0 )
                     {
                      before(grammarAccess.getModelElementAccess().getGroup_1()); 
-                    // InternalHenshin_text.g:1438:3: ( rule__ModelElement__Group_1__0 )
-                    // InternalHenshin_text.g:1438:4: rule__ModelElement__Group_1__0
+                    // InternalHenshin_text.g:1454:3: ( rule__ModelElement__Group_1__0 )
+                    // InternalHenshin_text.g:1454:4: rule__ModelElement__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__ModelElement__Group_1__0();
@@ -4488,36 +4539,36 @@
 
 
     // $ANTLR start "rule__RuleElement__Alternatives"
-    // InternalHenshin_text.g:1446:1: rule__RuleElement__Alternatives : ( ( ruleJavaImport ) | ( ruleCheckDangling ) | ( ruleInjectiveMatching ) | ( ruleConditions ) | ( ruleGraph ) );
+    // InternalHenshin_text.g:1462:1: rule__RuleElement__Alternatives : ( ( ruleJavaImport ) | ( ruleCheckDangling ) | ( ruleInjectiveMatching ) | ( ruleConditions ) | ( ruleGraph ) );
     public final void rule__RuleElement__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1450:1: ( ( ruleJavaImport ) | ( ruleCheckDangling ) | ( ruleInjectiveMatching ) | ( ruleConditions ) | ( ruleGraph ) )
+            // InternalHenshin_text.g:1466:1: ( ( ruleJavaImport ) | ( ruleCheckDangling ) | ( ruleInjectiveMatching ) | ( ruleConditions ) | ( ruleGraph ) )
             int alt3=5;
             switch ( input.LA(1) ) {
-            case 72:
+            case 76:
                 {
                 alt3=1;
                 }
                 break;
-            case 73:
+            case 77:
                 {
                 alt3=2;
                 }
                 break;
-            case 74:
+            case 78:
                 {
                 alt3=3;
                 }
                 break;
-            case 75:
+            case 79:
                 {
                 alt3=4;
                 }
                 break;
-            case 78:
+            case 82:
                 {
                 alt3=5;
                 }
@@ -4531,10 +4582,10 @@
 
             switch (alt3) {
                 case 1 :
-                    // InternalHenshin_text.g:1451:2: ( ruleJavaImport )
+                    // InternalHenshin_text.g:1467:2: ( ruleJavaImport )
                     {
-                    // InternalHenshin_text.g:1451:2: ( ruleJavaImport )
-                    // InternalHenshin_text.g:1452:3: ruleJavaImport
+                    // InternalHenshin_text.g:1467:2: ( ruleJavaImport )
+                    // InternalHenshin_text.g:1468:3: ruleJavaImport
                     {
                      before(grammarAccess.getRuleElementAccess().getJavaImportParserRuleCall_0()); 
                     pushFollow(FOLLOW_2);
@@ -4550,10 +4601,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1457:2: ( ruleCheckDangling )
+                    // InternalHenshin_text.g:1473:2: ( ruleCheckDangling )
                     {
-                    // InternalHenshin_text.g:1457:2: ( ruleCheckDangling )
-                    // InternalHenshin_text.g:1458:3: ruleCheckDangling
+                    // InternalHenshin_text.g:1473:2: ( ruleCheckDangling )
+                    // InternalHenshin_text.g:1474:3: ruleCheckDangling
                     {
                      before(grammarAccess.getRuleElementAccess().getCheckDanglingParserRuleCall_1()); 
                     pushFollow(FOLLOW_2);
@@ -4569,10 +4620,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:1463:2: ( ruleInjectiveMatching )
+                    // InternalHenshin_text.g:1479:2: ( ruleInjectiveMatching )
                     {
-                    // InternalHenshin_text.g:1463:2: ( ruleInjectiveMatching )
-                    // InternalHenshin_text.g:1464:3: ruleInjectiveMatching
+                    // InternalHenshin_text.g:1479:2: ( ruleInjectiveMatching )
+                    // InternalHenshin_text.g:1480:3: ruleInjectiveMatching
                     {
                      before(grammarAccess.getRuleElementAccess().getInjectiveMatchingParserRuleCall_2()); 
                     pushFollow(FOLLOW_2);
@@ -4588,10 +4639,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalHenshin_text.g:1469:2: ( ruleConditions )
+                    // InternalHenshin_text.g:1485:2: ( ruleConditions )
                     {
-                    // InternalHenshin_text.g:1469:2: ( ruleConditions )
-                    // InternalHenshin_text.g:1470:3: ruleConditions
+                    // InternalHenshin_text.g:1485:2: ( ruleConditions )
+                    // InternalHenshin_text.g:1486:3: ruleConditions
                     {
                      before(grammarAccess.getRuleElementAccess().getConditionsParserRuleCall_3()); 
                     pushFollow(FOLLOW_2);
@@ -4607,10 +4658,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalHenshin_text.g:1475:2: ( ruleGraph )
+                    // InternalHenshin_text.g:1491:2: ( ruleGraph )
                     {
-                    // InternalHenshin_text.g:1475:2: ( ruleGraph )
-                    // InternalHenshin_text.g:1476:3: ruleGraph
+                    // InternalHenshin_text.g:1491:2: ( ruleGraph )
+                    // InternalHenshin_text.g:1492:3: ruleGraph
                     {
                      before(grammarAccess.getRuleElementAccess().getGraphParserRuleCall_4()); 
                     pushFollow(FOLLOW_2);
@@ -4643,13 +4694,13 @@
 
 
     // $ANTLR start "rule__ActionType__Alternatives"
-    // InternalHenshin_text.g:1485:1: rule__ActionType__Alternatives : ( ( 'preserve' ) | ( 'create' ) | ( 'delete' ) | ( 'forbid' ) | ( 'require' ) );
+    // InternalHenshin_text.g:1501:1: rule__ActionType__Alternatives : ( ( 'preserve' ) | ( 'create' ) | ( 'delete' ) | ( 'forbid' ) | ( 'require' ) );
     public final void rule__ActionType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1489:1: ( ( 'preserve' ) | ( 'create' ) | ( 'delete' ) | ( 'forbid' ) | ( 'require' ) )
+            // InternalHenshin_text.g:1505:1: ( ( 'preserve' ) | ( 'create' ) | ( 'delete' ) | ( 'forbid' ) | ( 'require' ) )
             int alt4=5;
             switch ( input.LA(1) ) {
             case 13:
@@ -4686,10 +4737,10 @@
 
             switch (alt4) {
                 case 1 :
-                    // InternalHenshin_text.g:1490:2: ( 'preserve' )
+                    // InternalHenshin_text.g:1506:2: ( 'preserve' )
                     {
-                    // InternalHenshin_text.g:1490:2: ( 'preserve' )
-                    // InternalHenshin_text.g:1491:3: 'preserve'
+                    // InternalHenshin_text.g:1506:2: ( 'preserve' )
+                    // InternalHenshin_text.g:1507:3: 'preserve'
                     {
                      before(grammarAccess.getActionTypeAccess().getPreserveKeyword_0()); 
                     match(input,13,FOLLOW_2); 
@@ -4701,10 +4752,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1496:2: ( 'create' )
+                    // InternalHenshin_text.g:1512:2: ( 'create' )
                     {
-                    // InternalHenshin_text.g:1496:2: ( 'create' )
-                    // InternalHenshin_text.g:1497:3: 'create'
+                    // InternalHenshin_text.g:1512:2: ( 'create' )
+                    // InternalHenshin_text.g:1513:3: 'create'
                     {
                      before(grammarAccess.getActionTypeAccess().getCreateKeyword_1()); 
                     match(input,14,FOLLOW_2); 
@@ -4716,10 +4767,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:1502:2: ( 'delete' )
+                    // InternalHenshin_text.g:1518:2: ( 'delete' )
                     {
-                    // InternalHenshin_text.g:1502:2: ( 'delete' )
-                    // InternalHenshin_text.g:1503:3: 'delete'
+                    // InternalHenshin_text.g:1518:2: ( 'delete' )
+                    // InternalHenshin_text.g:1519:3: 'delete'
                     {
                      before(grammarAccess.getActionTypeAccess().getDeleteKeyword_2()); 
                     match(input,15,FOLLOW_2); 
@@ -4731,10 +4782,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalHenshin_text.g:1508:2: ( 'forbid' )
+                    // InternalHenshin_text.g:1524:2: ( 'forbid' )
                     {
-                    // InternalHenshin_text.g:1508:2: ( 'forbid' )
-                    // InternalHenshin_text.g:1509:3: 'forbid'
+                    // InternalHenshin_text.g:1524:2: ( 'forbid' )
+                    // InternalHenshin_text.g:1525:3: 'forbid'
                     {
                      before(grammarAccess.getActionTypeAccess().getForbidKeyword_3()); 
                     match(input,16,FOLLOW_2); 
@@ -4746,10 +4797,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalHenshin_text.g:1514:2: ( 'require' )
+                    // InternalHenshin_text.g:1530:2: ( 'require' )
                     {
-                    // InternalHenshin_text.g:1514:2: ( 'require' )
-                    // InternalHenshin_text.g:1515:3: 'require'
+                    // InternalHenshin_text.g:1530:2: ( 'require' )
+                    // InternalHenshin_text.g:1531:3: 'require'
                     {
                      before(grammarAccess.getActionTypeAccess().getRequireKeyword_4()); 
                     match(input,17,FOLLOW_2); 
@@ -4778,16 +4829,16 @@
 
 
     // $ANTLR start "rule__GraphElements__Alternatives"
-    // InternalHenshin_text.g:1524:1: rule__GraphElements__Alternatives : ( ( ruleEdges ) | ( ruleNode ) | ( ruleFormula ) | ( ruleMultiRule ) | ( ruleMultiRuleReuseNode ) );
+    // InternalHenshin_text.g:1540:1: rule__GraphElements__Alternatives : ( ( ruleEdges ) | ( ruleNode ) | ( ruleFormula ) | ( ruleMultiRule ) | ( ruleMultiRuleReuseNode ) );
     public final void rule__GraphElements__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1528:1: ( ( ruleEdges ) | ( ruleNode ) | ( ruleFormula ) | ( ruleMultiRule ) | ( ruleMultiRuleReuseNode ) )
+            // InternalHenshin_text.g:1544:1: ( ( ruleEdges ) | ( ruleNode ) | ( ruleFormula ) | ( ruleMultiRule ) | ( ruleMultiRuleReuseNode ) )
             int alt5=5;
             switch ( input.LA(1) ) {
-            case 79:
+            case 83:
                 {
                 alt5=1;
                 }
@@ -4797,22 +4848,22 @@
             case 15:
             case 16:
             case 17:
-            case 82:
+            case 86:
                 {
                 alt5=2;
                 }
                 break;
-            case 86:
+            case 90:
                 {
                 alt5=3;
                 }
                 break;
-            case 85:
+            case 89:
                 {
                 alt5=4;
                 }
                 break;
-            case 83:
+            case 87:
                 {
                 alt5=5;
                 }
@@ -4826,10 +4877,10 @@
 
             switch (alt5) {
                 case 1 :
-                    // InternalHenshin_text.g:1529:2: ( ruleEdges )
+                    // InternalHenshin_text.g:1545:2: ( ruleEdges )
                     {
-                    // InternalHenshin_text.g:1529:2: ( ruleEdges )
-                    // InternalHenshin_text.g:1530:3: ruleEdges
+                    // InternalHenshin_text.g:1545:2: ( ruleEdges )
+                    // InternalHenshin_text.g:1546:3: ruleEdges
                     {
                      before(grammarAccess.getGraphElementsAccess().getEdgesParserRuleCall_0()); 
                     pushFollow(FOLLOW_2);
@@ -4845,10 +4896,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1535:2: ( ruleNode )
+                    // InternalHenshin_text.g:1551:2: ( ruleNode )
                     {
-                    // InternalHenshin_text.g:1535:2: ( ruleNode )
-                    // InternalHenshin_text.g:1536:3: ruleNode
+                    // InternalHenshin_text.g:1551:2: ( ruleNode )
+                    // InternalHenshin_text.g:1552:3: ruleNode
                     {
                      before(grammarAccess.getGraphElementsAccess().getNodeParserRuleCall_1()); 
                     pushFollow(FOLLOW_2);
@@ -4864,10 +4915,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:1541:2: ( ruleFormula )
+                    // InternalHenshin_text.g:1557:2: ( ruleFormula )
                     {
-                    // InternalHenshin_text.g:1541:2: ( ruleFormula )
-                    // InternalHenshin_text.g:1542:3: ruleFormula
+                    // InternalHenshin_text.g:1557:2: ( ruleFormula )
+                    // InternalHenshin_text.g:1558:3: ruleFormula
                     {
                      before(grammarAccess.getGraphElementsAccess().getFormulaParserRuleCall_2()); 
                     pushFollow(FOLLOW_2);
@@ -4883,10 +4934,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalHenshin_text.g:1547:2: ( ruleMultiRule )
+                    // InternalHenshin_text.g:1563:2: ( ruleMultiRule )
                     {
-                    // InternalHenshin_text.g:1547:2: ( ruleMultiRule )
-                    // InternalHenshin_text.g:1548:3: ruleMultiRule
+                    // InternalHenshin_text.g:1563:2: ( ruleMultiRule )
+                    // InternalHenshin_text.g:1564:3: ruleMultiRule
                     {
                      before(grammarAccess.getGraphElementsAccess().getMultiRuleParserRuleCall_3()); 
                     pushFollow(FOLLOW_2);
@@ -4902,10 +4953,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalHenshin_text.g:1553:2: ( ruleMultiRuleReuseNode )
+                    // InternalHenshin_text.g:1569:2: ( ruleMultiRuleReuseNode )
                     {
-                    // InternalHenshin_text.g:1553:2: ( ruleMultiRuleReuseNode )
-                    // InternalHenshin_text.g:1554:3: ruleMultiRuleReuseNode
+                    // InternalHenshin_text.g:1569:2: ( ruleMultiRuleReuseNode )
+                    // InternalHenshin_text.g:1570:3: ruleMultiRuleReuseNode
                     {
                      before(grammarAccess.getGraphElementsAccess().getMultiRuleReuseNodeParserRuleCall_4()); 
                     pushFollow(FOLLOW_2);
@@ -4938,20 +4989,20 @@
 
 
     // $ANTLR start "rule__Attribute__Alternatives"
-    // InternalHenshin_text.g:1563:1: rule__Attribute__Alternatives : ( ( ( rule__Attribute__Group_0__0 ) ) | ( ( rule__Attribute__Group_1__0 ) ) );
+    // InternalHenshin_text.g:1579:1: rule__Attribute__Alternatives : ( ( ( rule__Attribute__Group_0__0 ) ) | ( ( rule__Attribute__Group_1__0 ) ) );
     public final void rule__Attribute__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1567:1: ( ( ( rule__Attribute__Group_0__0 ) ) | ( ( rule__Attribute__Group_1__0 ) ) )
+            // InternalHenshin_text.g:1583:1: ( ( ( rule__Attribute__Group_0__0 ) ) | ( ( rule__Attribute__Group_1__0 ) ) )
             int alt6=2;
             int LA6_0 = input.LA(1);
 
             if ( (LA6_0==RULE_ID||(LA6_0>=13 && LA6_0<=17)) ) {
                 alt6=1;
             }
-            else if ( (LA6_0==102) ) {
+            else if ( (LA6_0==106) ) {
                 alt6=2;
             }
             else {
@@ -4962,14 +5013,14 @@
             }
             switch (alt6) {
                 case 1 :
-                    // InternalHenshin_text.g:1568:2: ( ( rule__Attribute__Group_0__0 ) )
+                    // InternalHenshin_text.g:1584:2: ( ( rule__Attribute__Group_0__0 ) )
                     {
-                    // InternalHenshin_text.g:1568:2: ( ( rule__Attribute__Group_0__0 ) )
-                    // InternalHenshin_text.g:1569:3: ( rule__Attribute__Group_0__0 )
+                    // InternalHenshin_text.g:1584:2: ( ( rule__Attribute__Group_0__0 ) )
+                    // InternalHenshin_text.g:1585:3: ( rule__Attribute__Group_0__0 )
                     {
                      before(grammarAccess.getAttributeAccess().getGroup_0()); 
-                    // InternalHenshin_text.g:1570:3: ( rule__Attribute__Group_0__0 )
-                    // InternalHenshin_text.g:1570:4: rule__Attribute__Group_0__0
+                    // InternalHenshin_text.g:1586:3: ( rule__Attribute__Group_0__0 )
+                    // InternalHenshin_text.g:1586:4: rule__Attribute__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Attribute__Group_0__0();
@@ -4987,14 +5038,14 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1574:2: ( ( rule__Attribute__Group_1__0 ) )
+                    // InternalHenshin_text.g:1590:2: ( ( rule__Attribute__Group_1__0 ) )
                     {
-                    // InternalHenshin_text.g:1574:2: ( ( rule__Attribute__Group_1__0 ) )
-                    // InternalHenshin_text.g:1575:3: ( rule__Attribute__Group_1__0 )
+                    // InternalHenshin_text.g:1590:2: ( ( rule__Attribute__Group_1__0 ) )
+                    // InternalHenshin_text.g:1591:3: ( rule__Attribute__Group_1__0 )
                     {
                      before(grammarAccess.getAttributeAccess().getGroup_1()); 
-                    // InternalHenshin_text.g:1576:3: ( rule__Attribute__Group_1__0 )
-                    // InternalHenshin_text.g:1576:4: rule__Attribute__Group_1__0
+                    // InternalHenshin_text.g:1592:3: ( rule__Attribute__Group_1__0 )
+                    // InternalHenshin_text.g:1592:4: rule__Attribute__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Attribute__Group_1__0();
@@ -5029,13 +5080,13 @@
 
 
     // $ANTLR start "rule__ORorXOR__OpAlternatives_1_1_0"
-    // InternalHenshin_text.g:1584:1: rule__ORorXOR__OpAlternatives_1_1_0 : ( ( 'OR' ) | ( 'XOR' ) );
+    // InternalHenshin_text.g:1600:1: rule__ORorXOR__OpAlternatives_1_1_0 : ( ( 'OR' ) | ( 'XOR' ) );
     public final void rule__ORorXOR__OpAlternatives_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1588:1: ( ( 'OR' ) | ( 'XOR' ) )
+            // InternalHenshin_text.g:1604:1: ( ( 'OR' ) | ( 'XOR' ) )
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -5053,10 +5104,10 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalHenshin_text.g:1589:2: ( 'OR' )
+                    // InternalHenshin_text.g:1605:2: ( 'OR' )
                     {
-                    // InternalHenshin_text.g:1589:2: ( 'OR' )
-                    // InternalHenshin_text.g:1590:3: 'OR'
+                    // InternalHenshin_text.g:1605:2: ( 'OR' )
+                    // InternalHenshin_text.g:1606:3: 'OR'
                     {
                      before(grammarAccess.getORorXORAccess().getOpORKeyword_1_1_0_0()); 
                     match(input,18,FOLLOW_2); 
@@ -5068,10 +5119,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1595:2: ( 'XOR' )
+                    // InternalHenshin_text.g:1611:2: ( 'XOR' )
                     {
-                    // InternalHenshin_text.g:1595:2: ( 'XOR' )
-                    // InternalHenshin_text.g:1596:3: 'XOR'
+                    // InternalHenshin_text.g:1611:2: ( 'XOR' )
+                    // InternalHenshin_text.g:1612:3: 'XOR'
                     {
                      before(grammarAccess.getORorXORAccess().getOpXORKeyword_1_1_0_1()); 
                     match(input,19,FOLLOW_2); 
@@ -5100,21 +5151,21 @@
 
 
     // $ANTLR start "rule__Primary__Alternatives"
-    // InternalHenshin_text.g:1605:1: rule__Primary__Alternatives : ( ( ( rule__Primary__Group_0__0 ) ) | ( ( rule__Primary__Group_1__0 ) ) | ( ruleAtomic ) );
+    // InternalHenshin_text.g:1621:1: rule__Primary__Alternatives : ( ( ( rule__Primary__Group_0__0 ) ) | ( ( rule__Primary__Group_1__0 ) ) | ( ruleAtomic ) );
     public final void rule__Primary__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1609:1: ( ( ( rule__Primary__Group_0__0 ) ) | ( ( rule__Primary__Group_1__0 ) ) | ( ruleAtomic ) )
+            // InternalHenshin_text.g:1625:1: ( ( ( rule__Primary__Group_0__0 ) ) | ( ( rule__Primary__Group_1__0 ) ) | ( ruleAtomic ) )
             int alt8=3;
             switch ( input.LA(1) ) {
-            case 66:
+            case 70:
                 {
                 alt8=1;
                 }
                 break;
-            case 89:
+            case 93:
                 {
                 alt8=2;
                 }
@@ -5133,14 +5184,14 @@
 
             switch (alt8) {
                 case 1 :
-                    // InternalHenshin_text.g:1610:2: ( ( rule__Primary__Group_0__0 ) )
+                    // InternalHenshin_text.g:1626:2: ( ( rule__Primary__Group_0__0 ) )
                     {
-                    // InternalHenshin_text.g:1610:2: ( ( rule__Primary__Group_0__0 ) )
-                    // InternalHenshin_text.g:1611:3: ( rule__Primary__Group_0__0 )
+                    // InternalHenshin_text.g:1626:2: ( ( rule__Primary__Group_0__0 ) )
+                    // InternalHenshin_text.g:1627:3: ( rule__Primary__Group_0__0 )
                     {
                      before(grammarAccess.getPrimaryAccess().getGroup_0()); 
-                    // InternalHenshin_text.g:1612:3: ( rule__Primary__Group_0__0 )
-                    // InternalHenshin_text.g:1612:4: rule__Primary__Group_0__0
+                    // InternalHenshin_text.g:1628:3: ( rule__Primary__Group_0__0 )
+                    // InternalHenshin_text.g:1628:4: rule__Primary__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Primary__Group_0__0();
@@ -5158,14 +5209,14 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1616:2: ( ( rule__Primary__Group_1__0 ) )
+                    // InternalHenshin_text.g:1632:2: ( ( rule__Primary__Group_1__0 ) )
                     {
-                    // InternalHenshin_text.g:1616:2: ( ( rule__Primary__Group_1__0 ) )
-                    // InternalHenshin_text.g:1617:3: ( rule__Primary__Group_1__0 )
+                    // InternalHenshin_text.g:1632:2: ( ( rule__Primary__Group_1__0 ) )
+                    // InternalHenshin_text.g:1633:3: ( rule__Primary__Group_1__0 )
                     {
                      before(grammarAccess.getPrimaryAccess().getGroup_1()); 
-                    // InternalHenshin_text.g:1618:3: ( rule__Primary__Group_1__0 )
-                    // InternalHenshin_text.g:1618:4: rule__Primary__Group_1__0
+                    // InternalHenshin_text.g:1634:3: ( rule__Primary__Group_1__0 )
+                    // InternalHenshin_text.g:1634:4: rule__Primary__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Primary__Group_1__0();
@@ -5183,10 +5234,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:1622:2: ( ruleAtomic )
+                    // InternalHenshin_text.g:1638:2: ( ruleAtomic )
                     {
-                    // InternalHenshin_text.g:1622:2: ( ruleAtomic )
-                    // InternalHenshin_text.g:1623:3: ruleAtomic
+                    // InternalHenshin_text.g:1638:2: ( ruleAtomic )
+                    // InternalHenshin_text.g:1639:3: ruleAtomic
                     {
                      before(grammarAccess.getPrimaryAccess().getAtomicParserRuleCall_2()); 
                     pushFollow(FOLLOW_2);
@@ -5219,31 +5270,31 @@
 
 
     // $ANTLR start "rule__ConditionGraphElements__Alternatives"
-    // InternalHenshin_text.g:1632:1: rule__ConditionGraphElements__Alternatives : ( ( ruleConditionEdges ) | ( ruleConditionNode ) | ( ruleFormula ) | ( ruleConditionReuseNode ) );
+    // InternalHenshin_text.g:1648:1: rule__ConditionGraphElements__Alternatives : ( ( ruleConditionEdges ) | ( ruleConditionNode ) | ( ruleFormula ) | ( ruleConditionReuseNode ) );
     public final void rule__ConditionGraphElements__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1636:1: ( ( ruleConditionEdges ) | ( ruleConditionNode ) | ( ruleFormula ) | ( ruleConditionReuseNode ) )
+            // InternalHenshin_text.g:1652:1: ( ( ruleConditionEdges ) | ( ruleConditionNode ) | ( ruleFormula ) | ( ruleConditionReuseNode ) )
             int alt9=4;
             switch ( input.LA(1) ) {
-            case 79:
+            case 83:
                 {
                 alt9=1;
                 }
                 break;
-            case 82:
+            case 86:
                 {
                 alt9=2;
                 }
                 break;
-            case 86:
+            case 90:
                 {
                 alt9=3;
                 }
                 break;
-            case 83:
+            case 87:
                 {
                 alt9=4;
                 }
@@ -5257,10 +5308,10 @@
 
             switch (alt9) {
                 case 1 :
-                    // InternalHenshin_text.g:1637:2: ( ruleConditionEdges )
+                    // InternalHenshin_text.g:1653:2: ( ruleConditionEdges )
                     {
-                    // InternalHenshin_text.g:1637:2: ( ruleConditionEdges )
-                    // InternalHenshin_text.g:1638:3: ruleConditionEdges
+                    // InternalHenshin_text.g:1653:2: ( ruleConditionEdges )
+                    // InternalHenshin_text.g:1654:3: ruleConditionEdges
                     {
                      before(grammarAccess.getConditionGraphElementsAccess().getConditionEdgesParserRuleCall_0()); 
                     pushFollow(FOLLOW_2);
@@ -5276,10 +5327,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1643:2: ( ruleConditionNode )
+                    // InternalHenshin_text.g:1659:2: ( ruleConditionNode )
                     {
-                    // InternalHenshin_text.g:1643:2: ( ruleConditionNode )
-                    // InternalHenshin_text.g:1644:3: ruleConditionNode
+                    // InternalHenshin_text.g:1659:2: ( ruleConditionNode )
+                    // InternalHenshin_text.g:1660:3: ruleConditionNode
                     {
                      before(grammarAccess.getConditionGraphElementsAccess().getConditionNodeParserRuleCall_1()); 
                     pushFollow(FOLLOW_2);
@@ -5295,10 +5346,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:1649:2: ( ruleFormula )
+                    // InternalHenshin_text.g:1665:2: ( ruleFormula )
                     {
-                    // InternalHenshin_text.g:1649:2: ( ruleFormula )
-                    // InternalHenshin_text.g:1650:3: ruleFormula
+                    // InternalHenshin_text.g:1665:2: ( ruleFormula )
+                    // InternalHenshin_text.g:1666:3: ruleFormula
                     {
                      before(grammarAccess.getConditionGraphElementsAccess().getFormulaParserRuleCall_2()); 
                     pushFollow(FOLLOW_2);
@@ -5314,10 +5365,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalHenshin_text.g:1655:2: ( ruleConditionReuseNode )
+                    // InternalHenshin_text.g:1671:2: ( ruleConditionReuseNode )
                     {
-                    // InternalHenshin_text.g:1655:2: ( ruleConditionReuseNode )
-                    // InternalHenshin_text.g:1656:3: ruleConditionReuseNode
+                    // InternalHenshin_text.g:1671:2: ( ruleConditionReuseNode )
+                    // InternalHenshin_text.g:1672:3: ruleConditionReuseNode
                     {
                      before(grammarAccess.getConditionGraphElementsAccess().getConditionReuseNodeParserRuleCall_3()); 
                     pushFollow(FOLLOW_2);
@@ -5350,13 +5401,13 @@
 
 
     // $ANTLR start "rule__UnitElement__Alternatives"
-    // InternalHenshin_text.g:1665:1: rule__UnitElement__Alternatives : ( ( ( rule__UnitElement__Group_0__0 ) ) | ( ( rule__UnitElement__Group_1__0 ) ) | ( ruleSequentialProperties ) | ( ruleIndependentUnit ) | ( ruleConditionalUnit ) | ( rulePriorityUnit ) | ( ruleIteratedUnit ) | ( ruleLoopUnit ) );
+    // InternalHenshin_text.g:1681:1: rule__UnitElement__Alternatives : ( ( ( rule__UnitElement__Group_0__0 ) ) | ( ( rule__UnitElement__Group_1__0 ) ) | ( ruleSequentialProperties ) | ( ruleIndependentUnit ) | ( ruleConditionalUnit ) | ( rulePriorityUnit ) | ( ruleIteratedUnit ) | ( ruleLoopUnit ) );
     public final void rule__UnitElement__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1669:1: ( ( ( rule__UnitElement__Group_0__0 ) ) | ( ( rule__UnitElement__Group_1__0 ) ) | ( ruleSequentialProperties ) | ( ruleIndependentUnit ) | ( ruleConditionalUnit ) | ( rulePriorityUnit ) | ( ruleIteratedUnit ) | ( ruleLoopUnit ) )
+            // InternalHenshin_text.g:1685:1: ( ( ( rule__UnitElement__Group_0__0 ) ) | ( ( rule__UnitElement__Group_1__0 ) ) | ( ruleSequentialProperties ) | ( ruleIndependentUnit ) | ( ruleConditionalUnit ) | ( rulePriorityUnit ) | ( ruleIteratedUnit ) | ( ruleLoopUnit ) )
             int alt10=8;
             switch ( input.LA(1) ) {
             case RULE_ID:
@@ -5364,38 +5415,38 @@
                 alt10=1;
                 }
                 break;
-            case 68:
+            case 72:
                 {
                 alt10=2;
                 }
                 break;
-            case 91:
-            case 92:
+            case 95:
+            case 96:
                 {
                 alt10=3;
                 }
                 break;
-            case 93:
+            case 97:
                 {
                 alt10=4;
                 }
                 break;
-            case 94:
+            case 98:
                 {
                 alt10=5;
                 }
                 break;
-            case 97:
+            case 101:
                 {
                 alt10=6;
                 }
                 break;
-            case 98:
+            case 102:
                 {
                 alt10=7;
                 }
                 break;
-            case 99:
+            case 103:
                 {
                 alt10=8;
                 }
@@ -5409,14 +5460,14 @@
 
             switch (alt10) {
                 case 1 :
-                    // InternalHenshin_text.g:1670:2: ( ( rule__UnitElement__Group_0__0 ) )
+                    // InternalHenshin_text.g:1686:2: ( ( rule__UnitElement__Group_0__0 ) )
                     {
-                    // InternalHenshin_text.g:1670:2: ( ( rule__UnitElement__Group_0__0 ) )
-                    // InternalHenshin_text.g:1671:3: ( rule__UnitElement__Group_0__0 )
+                    // InternalHenshin_text.g:1686:2: ( ( rule__UnitElement__Group_0__0 ) )
+                    // InternalHenshin_text.g:1687:3: ( rule__UnitElement__Group_0__0 )
                     {
                      before(grammarAccess.getUnitElementAccess().getGroup_0()); 
-                    // InternalHenshin_text.g:1672:3: ( rule__UnitElement__Group_0__0 )
-                    // InternalHenshin_text.g:1672:4: rule__UnitElement__Group_0__0
+                    // InternalHenshin_text.g:1688:3: ( rule__UnitElement__Group_0__0 )
+                    // InternalHenshin_text.g:1688:4: rule__UnitElement__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__UnitElement__Group_0__0();
@@ -5434,14 +5485,14 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1676:2: ( ( rule__UnitElement__Group_1__0 ) )
+                    // InternalHenshin_text.g:1692:2: ( ( rule__UnitElement__Group_1__0 ) )
                     {
-                    // InternalHenshin_text.g:1676:2: ( ( rule__UnitElement__Group_1__0 ) )
-                    // InternalHenshin_text.g:1677:3: ( rule__UnitElement__Group_1__0 )
+                    // InternalHenshin_text.g:1692:2: ( ( rule__UnitElement__Group_1__0 ) )
+                    // InternalHenshin_text.g:1693:3: ( rule__UnitElement__Group_1__0 )
                     {
                      before(grammarAccess.getUnitElementAccess().getGroup_1()); 
-                    // InternalHenshin_text.g:1678:3: ( rule__UnitElement__Group_1__0 )
-                    // InternalHenshin_text.g:1678:4: rule__UnitElement__Group_1__0
+                    // InternalHenshin_text.g:1694:3: ( rule__UnitElement__Group_1__0 )
+                    // InternalHenshin_text.g:1694:4: rule__UnitElement__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__UnitElement__Group_1__0();
@@ -5459,10 +5510,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:1682:2: ( ruleSequentialProperties )
+                    // InternalHenshin_text.g:1698:2: ( ruleSequentialProperties )
                     {
-                    // InternalHenshin_text.g:1682:2: ( ruleSequentialProperties )
-                    // InternalHenshin_text.g:1683:3: ruleSequentialProperties
+                    // InternalHenshin_text.g:1698:2: ( ruleSequentialProperties )
+                    // InternalHenshin_text.g:1699:3: ruleSequentialProperties
                     {
                      before(grammarAccess.getUnitElementAccess().getSequentialPropertiesParserRuleCall_2()); 
                     pushFollow(FOLLOW_2);
@@ -5478,10 +5529,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalHenshin_text.g:1688:2: ( ruleIndependentUnit )
+                    // InternalHenshin_text.g:1704:2: ( ruleIndependentUnit )
                     {
-                    // InternalHenshin_text.g:1688:2: ( ruleIndependentUnit )
-                    // InternalHenshin_text.g:1689:3: ruleIndependentUnit
+                    // InternalHenshin_text.g:1704:2: ( ruleIndependentUnit )
+                    // InternalHenshin_text.g:1705:3: ruleIndependentUnit
                     {
                      before(grammarAccess.getUnitElementAccess().getIndependentUnitParserRuleCall_3()); 
                     pushFollow(FOLLOW_2);
@@ -5497,10 +5548,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalHenshin_text.g:1694:2: ( ruleConditionalUnit )
+                    // InternalHenshin_text.g:1710:2: ( ruleConditionalUnit )
                     {
-                    // InternalHenshin_text.g:1694:2: ( ruleConditionalUnit )
-                    // InternalHenshin_text.g:1695:3: ruleConditionalUnit
+                    // InternalHenshin_text.g:1710:2: ( ruleConditionalUnit )
+                    // InternalHenshin_text.g:1711:3: ruleConditionalUnit
                     {
                      before(grammarAccess.getUnitElementAccess().getConditionalUnitParserRuleCall_4()); 
                     pushFollow(FOLLOW_2);
@@ -5516,10 +5567,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalHenshin_text.g:1700:2: ( rulePriorityUnit )
+                    // InternalHenshin_text.g:1716:2: ( rulePriorityUnit )
                     {
-                    // InternalHenshin_text.g:1700:2: ( rulePriorityUnit )
-                    // InternalHenshin_text.g:1701:3: rulePriorityUnit
+                    // InternalHenshin_text.g:1716:2: ( rulePriorityUnit )
+                    // InternalHenshin_text.g:1717:3: rulePriorityUnit
                     {
                      before(grammarAccess.getUnitElementAccess().getPriorityUnitParserRuleCall_5()); 
                     pushFollow(FOLLOW_2);
@@ -5535,10 +5586,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalHenshin_text.g:1706:2: ( ruleIteratedUnit )
+                    // InternalHenshin_text.g:1722:2: ( ruleIteratedUnit )
                     {
-                    // InternalHenshin_text.g:1706:2: ( ruleIteratedUnit )
-                    // InternalHenshin_text.g:1707:3: ruleIteratedUnit
+                    // InternalHenshin_text.g:1722:2: ( ruleIteratedUnit )
+                    // InternalHenshin_text.g:1723:3: ruleIteratedUnit
                     {
                      before(grammarAccess.getUnitElementAccess().getIteratedUnitParserRuleCall_6()); 
                     pushFollow(FOLLOW_2);
@@ -5554,10 +5605,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalHenshin_text.g:1712:2: ( ruleLoopUnit )
+                    // InternalHenshin_text.g:1728:2: ( ruleLoopUnit )
                     {
-                    // InternalHenshin_text.g:1712:2: ( ruleLoopUnit )
-                    // InternalHenshin_text.g:1713:3: ruleLoopUnit
+                    // InternalHenshin_text.g:1728:2: ( ruleLoopUnit )
+                    // InternalHenshin_text.g:1729:3: ruleLoopUnit
                     {
                      before(grammarAccess.getUnitElementAccess().getLoopUnitParserRuleCall_7()); 
                     pushFollow(FOLLOW_2);
@@ -5590,20 +5641,20 @@
 
 
     // $ANTLR start "rule__SequentialProperties__Alternatives"
-    // InternalHenshin_text.g:1722:1: rule__SequentialProperties__Alternatives : ( ( ruleStrict ) | ( ruleRollback ) );
+    // InternalHenshin_text.g:1738:1: rule__SequentialProperties__Alternatives : ( ( ruleStrict ) | ( ruleRollback ) );
     public final void rule__SequentialProperties__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1726:1: ( ( ruleStrict ) | ( ruleRollback ) )
+            // InternalHenshin_text.g:1742:1: ( ( ruleStrict ) | ( ruleRollback ) )
             int alt11=2;
             int LA11_0 = input.LA(1);
 
-            if ( (LA11_0==91) ) {
+            if ( (LA11_0==95) ) {
                 alt11=1;
             }
-            else if ( (LA11_0==92) ) {
+            else if ( (LA11_0==96) ) {
                 alt11=2;
             }
             else {
@@ -5614,10 +5665,10 @@
             }
             switch (alt11) {
                 case 1 :
-                    // InternalHenshin_text.g:1727:2: ( ruleStrict )
+                    // InternalHenshin_text.g:1743:2: ( ruleStrict )
                     {
-                    // InternalHenshin_text.g:1727:2: ( ruleStrict )
-                    // InternalHenshin_text.g:1728:3: ruleStrict
+                    // InternalHenshin_text.g:1743:2: ( ruleStrict )
+                    // InternalHenshin_text.g:1744:3: ruleStrict
                     {
                      before(grammarAccess.getSequentialPropertiesAccess().getStrictParserRuleCall_0()); 
                     pushFollow(FOLLOW_2);
@@ -5633,10 +5684,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1733:2: ( ruleRollback )
+                    // InternalHenshin_text.g:1749:2: ( ruleRollback )
                     {
-                    // InternalHenshin_text.g:1733:2: ( ruleRollback )
-                    // InternalHenshin_text.g:1734:3: ruleRollback
+                    // InternalHenshin_text.g:1749:2: ( ruleRollback )
+                    // InternalHenshin_text.g:1750:3: ruleRollback
                     {
                      before(grammarAccess.getSequentialPropertiesAccess().getRollbackParserRuleCall_1()); 
                     pushFollow(FOLLOW_2);
@@ -5669,17 +5720,17 @@
 
 
     // $ANTLR start "rule__ParameterType__Alternatives"
-    // InternalHenshin_text.g:1743:1: rule__ParameterType__Alternatives : ( ( ( rule__ParameterType__EnumTypeAssignment_0 ) ) | ( ( rule__ParameterType__TypeAssignment_1 ) ) );
+    // InternalHenshin_text.g:1759:1: rule__ParameterType__Alternatives : ( ( ( rule__ParameterType__EnumTypeAssignment_0 ) ) | ( ( rule__ParameterType__TypeAssignment_1 ) ) );
     public final void rule__ParameterType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1747:1: ( ( ( rule__ParameterType__EnumTypeAssignment_0 ) ) | ( ( rule__ParameterType__TypeAssignment_1 ) ) )
+            // InternalHenshin_text.g:1763:1: ( ( ( rule__ParameterType__EnumTypeAssignment_0 ) ) | ( ( rule__ParameterType__TypeAssignment_1 ) ) )
             int alt12=2;
             int LA12_0 = input.LA(1);
 
-            if ( ((LA12_0>=30 && LA12_0<=62)) ) {
+            if ( ((LA12_0>=34 && LA12_0<=66)) ) {
                 alt12=1;
             }
             else if ( (LA12_0==RULE_ID) ) {
@@ -5693,14 +5744,14 @@
             }
             switch (alt12) {
                 case 1 :
-                    // InternalHenshin_text.g:1748:2: ( ( rule__ParameterType__EnumTypeAssignment_0 ) )
+                    // InternalHenshin_text.g:1764:2: ( ( rule__ParameterType__EnumTypeAssignment_0 ) )
                     {
-                    // InternalHenshin_text.g:1748:2: ( ( rule__ParameterType__EnumTypeAssignment_0 ) )
-                    // InternalHenshin_text.g:1749:3: ( rule__ParameterType__EnumTypeAssignment_0 )
+                    // InternalHenshin_text.g:1764:2: ( ( rule__ParameterType__EnumTypeAssignment_0 ) )
+                    // InternalHenshin_text.g:1765:3: ( rule__ParameterType__EnumTypeAssignment_0 )
                     {
                      before(grammarAccess.getParameterTypeAccess().getEnumTypeAssignment_0()); 
-                    // InternalHenshin_text.g:1750:3: ( rule__ParameterType__EnumTypeAssignment_0 )
-                    // InternalHenshin_text.g:1750:4: rule__ParameterType__EnumTypeAssignment_0
+                    // InternalHenshin_text.g:1766:3: ( rule__ParameterType__EnumTypeAssignment_0 )
+                    // InternalHenshin_text.g:1766:4: rule__ParameterType__EnumTypeAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__ParameterType__EnumTypeAssignment_0();
@@ -5718,14 +5769,14 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1754:2: ( ( rule__ParameterType__TypeAssignment_1 ) )
+                    // InternalHenshin_text.g:1770:2: ( ( rule__ParameterType__TypeAssignment_1 ) )
                     {
-                    // InternalHenshin_text.g:1754:2: ( ( rule__ParameterType__TypeAssignment_1 ) )
-                    // InternalHenshin_text.g:1755:3: ( rule__ParameterType__TypeAssignment_1 )
+                    // InternalHenshin_text.g:1770:2: ( ( rule__ParameterType__TypeAssignment_1 ) )
+                    // InternalHenshin_text.g:1771:3: ( rule__ParameterType__TypeAssignment_1 )
                     {
                      before(grammarAccess.getParameterTypeAccess().getTypeAssignment_1()); 
-                    // InternalHenshin_text.g:1756:3: ( rule__ParameterType__TypeAssignment_1 )
-                    // InternalHenshin_text.g:1756:4: rule__ParameterType__TypeAssignment_1
+                    // InternalHenshin_text.g:1772:3: ( rule__ParameterType__TypeAssignment_1 )
+                    // InternalHenshin_text.g:1772:4: rule__ParameterType__TypeAssignment_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__ParameterType__TypeAssignment_1();
@@ -5760,13 +5811,13 @@
 
 
     // $ANTLR start "rule__EBoolean__Alternatives"
-    // InternalHenshin_text.g:1764:1: rule__EBoolean__Alternatives : ( ( 'true' ) | ( 'false' ) );
+    // InternalHenshin_text.g:1780:1: rule__EBoolean__Alternatives : ( ( 'true' ) | ( 'false' ) );
     public final void rule__EBoolean__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1768:1: ( ( 'true' ) | ( 'false' ) )
+            // InternalHenshin_text.g:1784:1: ( ( 'true' ) | ( 'false' ) )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -5784,10 +5835,10 @@
             }
             switch (alt13) {
                 case 1 :
-                    // InternalHenshin_text.g:1769:2: ( 'true' )
+                    // InternalHenshin_text.g:1785:2: ( 'true' )
                     {
-                    // InternalHenshin_text.g:1769:2: ( 'true' )
-                    // InternalHenshin_text.g:1770:3: 'true'
+                    // InternalHenshin_text.g:1785:2: ( 'true' )
+                    // InternalHenshin_text.g:1786:3: 'true'
                     {
                      before(grammarAccess.getEBooleanAccess().getTrueKeyword_0()); 
                     match(input,20,FOLLOW_2); 
@@ -5799,10 +5850,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1775:2: ( 'false' )
+                    // InternalHenshin_text.g:1791:2: ( 'false' )
                     {
-                    // InternalHenshin_text.g:1775:2: ( 'false' )
-                    // InternalHenshin_text.g:1776:3: 'false'
+                    // InternalHenshin_text.g:1791:2: ( 'false' )
+                    // InternalHenshin_text.g:1792:3: 'false'
                     {
                      before(grammarAccess.getEBooleanAccess().getFalseKeyword_1()); 
                     match(input,21,FOLLOW_2); 
@@ -5831,13 +5882,13 @@
 
 
     // $ANTLR start "rule__EqualityExpression__OpAlternatives_1_1_0"
-    // InternalHenshin_text.g:1785:1: rule__EqualityExpression__OpAlternatives_1_1_0 : ( ( '==' ) | ( '!=' ) );
+    // InternalHenshin_text.g:1801:1: rule__EqualityExpression__OpAlternatives_1_1_0 : ( ( '==' ) | ( '!=' ) );
     public final void rule__EqualityExpression__OpAlternatives_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1789:1: ( ( '==' ) | ( '!=' ) )
+            // InternalHenshin_text.g:1805:1: ( ( '==' ) | ( '!=' ) )
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -5855,10 +5906,10 @@
             }
             switch (alt14) {
                 case 1 :
-                    // InternalHenshin_text.g:1790:2: ( '==' )
+                    // InternalHenshin_text.g:1806:2: ( '==' )
                     {
-                    // InternalHenshin_text.g:1790:2: ( '==' )
-                    // InternalHenshin_text.g:1791:3: '=='
+                    // InternalHenshin_text.g:1806:2: ( '==' )
+                    // InternalHenshin_text.g:1807:3: '=='
                     {
                      before(grammarAccess.getEqualityExpressionAccess().getOpEqualsSignEqualsSignKeyword_1_1_0_0()); 
                     match(input,22,FOLLOW_2); 
@@ -5870,10 +5921,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1796:2: ( '!=' )
+                    // InternalHenshin_text.g:1812:2: ( '!=' )
                     {
-                    // InternalHenshin_text.g:1796:2: ( '!=' )
-                    // InternalHenshin_text.g:1797:3: '!='
+                    // InternalHenshin_text.g:1812:2: ( '!=' )
+                    // InternalHenshin_text.g:1813:3: '!='
                     {
                      before(grammarAccess.getEqualityExpressionAccess().getOpExclamationMarkEqualsSignKeyword_1_1_0_1()); 
                     match(input,23,FOLLOW_2); 
@@ -5902,13 +5953,13 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__OpAlternatives_1_1_0"
-    // InternalHenshin_text.g:1806:1: rule__ComparisonExpression__OpAlternatives_1_1_0 : ( ( '>=' ) | ( '<=' ) | ( '>' ) | ( '<' ) );
+    // InternalHenshin_text.g:1822:1: rule__ComparisonExpression__OpAlternatives_1_1_0 : ( ( '>=' ) | ( '<=' ) | ( '>' ) | ( '<' ) );
     public final void rule__ComparisonExpression__OpAlternatives_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1810:1: ( ( '>=' ) | ( '<=' ) | ( '>' ) | ( '<' ) )
+            // InternalHenshin_text.g:1826:1: ( ( '>=' ) | ( '<=' ) | ( '>' ) | ( '<' ) )
             int alt15=4;
             switch ( input.LA(1) ) {
             case 24:
@@ -5940,10 +5991,10 @@
 
             switch (alt15) {
                 case 1 :
-                    // InternalHenshin_text.g:1811:2: ( '>=' )
+                    // InternalHenshin_text.g:1827:2: ( '>=' )
                     {
-                    // InternalHenshin_text.g:1811:2: ( '>=' )
-                    // InternalHenshin_text.g:1812:3: '>='
+                    // InternalHenshin_text.g:1827:2: ( '>=' )
+                    // InternalHenshin_text.g:1828:3: '>='
                     {
                      before(grammarAccess.getComparisonExpressionAccess().getOpGreaterThanSignEqualsSignKeyword_1_1_0_0()); 
                     match(input,24,FOLLOW_2); 
@@ -5955,10 +6006,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1817:2: ( '<=' )
+                    // InternalHenshin_text.g:1833:2: ( '<=' )
                     {
-                    // InternalHenshin_text.g:1817:2: ( '<=' )
-                    // InternalHenshin_text.g:1818:3: '<='
+                    // InternalHenshin_text.g:1833:2: ( '<=' )
+                    // InternalHenshin_text.g:1834:3: '<='
                     {
                      before(grammarAccess.getComparisonExpressionAccess().getOpLessThanSignEqualsSignKeyword_1_1_0_1()); 
                     match(input,25,FOLLOW_2); 
@@ -5970,10 +6021,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:1823:2: ( '>' )
+                    // InternalHenshin_text.g:1839:2: ( '>' )
                     {
-                    // InternalHenshin_text.g:1823:2: ( '>' )
-                    // InternalHenshin_text.g:1824:3: '>'
+                    // InternalHenshin_text.g:1839:2: ( '>' )
+                    // InternalHenshin_text.g:1840:3: '>'
                     {
                      before(grammarAccess.getComparisonExpressionAccess().getOpGreaterThanSignKeyword_1_1_0_2()); 
                     match(input,26,FOLLOW_2); 
@@ -5985,10 +6036,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalHenshin_text.g:1829:2: ( '<' )
+                    // InternalHenshin_text.g:1845:2: ( '<' )
                     {
-                    // InternalHenshin_text.g:1829:2: ( '<' )
-                    // InternalHenshin_text.g:1830:3: '<'
+                    // InternalHenshin_text.g:1845:2: ( '<' )
+                    // InternalHenshin_text.g:1846:3: '<'
                     {
                      before(grammarAccess.getComparisonExpressionAccess().getOpLessThanSignKeyword_1_1_0_3()); 
                     match(input,27,FOLLOW_2); 
@@ -6017,20 +6068,20 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Alternatives_1_0"
-    // InternalHenshin_text.g:1839:1: rule__PlusOrMinusExpression__Alternatives_1_0 : ( ( ( rule__PlusOrMinusExpression__Group_1_0_0__0 ) ) | ( ( rule__PlusOrMinusExpression__Group_1_0_1__0 ) ) );
+    // InternalHenshin_text.g:1855:1: rule__PlusOrMinusExpression__Alternatives_1_0 : ( ( ( rule__PlusOrMinusExpression__Group_1_0_0__0 ) ) | ( ( rule__PlusOrMinusExpression__Group_1_0_1__0 ) ) );
     public final void rule__PlusOrMinusExpression__Alternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1843:1: ( ( ( rule__PlusOrMinusExpression__Group_1_0_0__0 ) ) | ( ( rule__PlusOrMinusExpression__Group_1_0_1__0 ) ) )
+            // InternalHenshin_text.g:1859:1: ( ( ( rule__PlusOrMinusExpression__Group_1_0_0__0 ) ) | ( ( rule__PlusOrMinusExpression__Group_1_0_1__0 ) ) )
             int alt16=2;
             int LA16_0 = input.LA(1);
 
-            if ( (LA16_0==100) ) {
+            if ( (LA16_0==104) ) {
                 alt16=1;
             }
-            else if ( (LA16_0==101) ) {
+            else if ( (LA16_0==105) ) {
                 alt16=2;
             }
             else {
@@ -6041,14 +6092,14 @@
             }
             switch (alt16) {
                 case 1 :
-                    // InternalHenshin_text.g:1844:2: ( ( rule__PlusOrMinusExpression__Group_1_0_0__0 ) )
+                    // InternalHenshin_text.g:1860:2: ( ( rule__PlusOrMinusExpression__Group_1_0_0__0 ) )
                     {
-                    // InternalHenshin_text.g:1844:2: ( ( rule__PlusOrMinusExpression__Group_1_0_0__0 ) )
-                    // InternalHenshin_text.g:1845:3: ( rule__PlusOrMinusExpression__Group_1_0_0__0 )
+                    // InternalHenshin_text.g:1860:2: ( ( rule__PlusOrMinusExpression__Group_1_0_0__0 ) )
+                    // InternalHenshin_text.g:1861:3: ( rule__PlusOrMinusExpression__Group_1_0_0__0 )
                     {
                      before(grammarAccess.getPlusOrMinusExpressionAccess().getGroup_1_0_0()); 
-                    // InternalHenshin_text.g:1846:3: ( rule__PlusOrMinusExpression__Group_1_0_0__0 )
-                    // InternalHenshin_text.g:1846:4: rule__PlusOrMinusExpression__Group_1_0_0__0
+                    // InternalHenshin_text.g:1862:3: ( rule__PlusOrMinusExpression__Group_1_0_0__0 )
+                    // InternalHenshin_text.g:1862:4: rule__PlusOrMinusExpression__Group_1_0_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PlusOrMinusExpression__Group_1_0_0__0();
@@ -6066,14 +6117,14 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1850:2: ( ( rule__PlusOrMinusExpression__Group_1_0_1__0 ) )
+                    // InternalHenshin_text.g:1866:2: ( ( rule__PlusOrMinusExpression__Group_1_0_1__0 ) )
                     {
-                    // InternalHenshin_text.g:1850:2: ( ( rule__PlusOrMinusExpression__Group_1_0_1__0 ) )
-                    // InternalHenshin_text.g:1851:3: ( rule__PlusOrMinusExpression__Group_1_0_1__0 )
+                    // InternalHenshin_text.g:1866:2: ( ( rule__PlusOrMinusExpression__Group_1_0_1__0 ) )
+                    // InternalHenshin_text.g:1867:3: ( rule__PlusOrMinusExpression__Group_1_0_1__0 )
                     {
                      before(grammarAccess.getPlusOrMinusExpressionAccess().getGroup_1_0_1()); 
-                    // InternalHenshin_text.g:1852:3: ( rule__PlusOrMinusExpression__Group_1_0_1__0 )
-                    // InternalHenshin_text.g:1852:4: rule__PlusOrMinusExpression__Group_1_0_1__0
+                    // InternalHenshin_text.g:1868:3: ( rule__PlusOrMinusExpression__Group_1_0_1__0 )
+                    // InternalHenshin_text.g:1868:4: rule__PlusOrMinusExpression__Group_1_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PlusOrMinusExpression__Group_1_0_1__0();
@@ -6108,13 +6159,13 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__OpAlternatives_1_1_0"
-    // InternalHenshin_text.g:1860:1: rule__MulOrDivExpression__OpAlternatives_1_1_0 : ( ( '*' ) | ( '/' ) );
+    // InternalHenshin_text.g:1876:1: rule__MulOrDivExpression__OpAlternatives_1_1_0 : ( ( '*' ) | ( '/' ) );
     public final void rule__MulOrDivExpression__OpAlternatives_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1864:1: ( ( '*' ) | ( '/' ) )
+            // InternalHenshin_text.g:1880:1: ( ( '*' ) | ( '/' ) )
             int alt17=2;
             int LA17_0 = input.LA(1);
 
@@ -6132,10 +6183,10 @@
             }
             switch (alt17) {
                 case 1 :
-                    // InternalHenshin_text.g:1865:2: ( '*' )
+                    // InternalHenshin_text.g:1881:2: ( '*' )
                     {
-                    // InternalHenshin_text.g:1865:2: ( '*' )
-                    // InternalHenshin_text.g:1866:3: '*'
+                    // InternalHenshin_text.g:1881:2: ( '*' )
+                    // InternalHenshin_text.g:1882:3: '*'
                     {
                      before(grammarAccess.getMulOrDivExpressionAccess().getOpAsteriskKeyword_1_1_0_0()); 
                     match(input,28,FOLLOW_2); 
@@ -6147,10 +6198,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1871:2: ( '/' )
+                    // InternalHenshin_text.g:1887:2: ( '/' )
                     {
-                    // InternalHenshin_text.g:1871:2: ( '/' )
-                    // InternalHenshin_text.g:1872:3: '/'
+                    // InternalHenshin_text.g:1887:2: ( '/' )
+                    // InternalHenshin_text.g:1888:3: '/'
                     {
                      before(grammarAccess.getMulOrDivExpressionAccess().getOpSolidusKeyword_1_1_0_1()); 
                     match(input,29,FOLLOW_2); 
@@ -6179,21 +6230,21 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Alternatives"
-    // InternalHenshin_text.g:1881:1: rule__PrimaryExpression__Alternatives : ( ( ( rule__PrimaryExpression__Group_0__0 ) ) | ( ( rule__PrimaryExpression__Group_1__0 ) ) | ( ruleAtomicExpression ) );
+    // InternalHenshin_text.g:1897:1: rule__PrimaryExpression__Alternatives : ( ( ( rule__PrimaryExpression__Group_0__0 ) ) | ( ( rule__PrimaryExpression__Group_1__0 ) ) | ( ruleAtomicExpression ) );
     public final void rule__PrimaryExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1885:1: ( ( ( rule__PrimaryExpression__Group_0__0 ) ) | ( ( rule__PrimaryExpression__Group_1__0 ) ) | ( ruleAtomicExpression ) )
+            // InternalHenshin_text.g:1901:1: ( ( ( rule__PrimaryExpression__Group_0__0 ) ) | ( ( rule__PrimaryExpression__Group_1__0 ) ) | ( ruleAtomicExpression ) )
             int alt18=3;
             switch ( input.LA(1) ) {
-            case 66:
+            case 70:
                 {
                 alt18=1;
                 }
                 break;
-            case 89:
+            case 93:
                 {
                 alt18=2;
                 }
@@ -6218,14 +6269,14 @@
 
             switch (alt18) {
                 case 1 :
-                    // InternalHenshin_text.g:1886:2: ( ( rule__PrimaryExpression__Group_0__0 ) )
+                    // InternalHenshin_text.g:1902:2: ( ( rule__PrimaryExpression__Group_0__0 ) )
                     {
-                    // InternalHenshin_text.g:1886:2: ( ( rule__PrimaryExpression__Group_0__0 ) )
-                    // InternalHenshin_text.g:1887:3: ( rule__PrimaryExpression__Group_0__0 )
+                    // InternalHenshin_text.g:1902:2: ( ( rule__PrimaryExpression__Group_0__0 ) )
+                    // InternalHenshin_text.g:1903:3: ( rule__PrimaryExpression__Group_0__0 )
                     {
                      before(grammarAccess.getPrimaryExpressionAccess().getGroup_0()); 
-                    // InternalHenshin_text.g:1888:3: ( rule__PrimaryExpression__Group_0__0 )
-                    // InternalHenshin_text.g:1888:4: rule__PrimaryExpression__Group_0__0
+                    // InternalHenshin_text.g:1904:3: ( rule__PrimaryExpression__Group_0__0 )
+                    // InternalHenshin_text.g:1904:4: rule__PrimaryExpression__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PrimaryExpression__Group_0__0();
@@ -6243,14 +6294,14 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1892:2: ( ( rule__PrimaryExpression__Group_1__0 ) )
+                    // InternalHenshin_text.g:1908:2: ( ( rule__PrimaryExpression__Group_1__0 ) )
                     {
-                    // InternalHenshin_text.g:1892:2: ( ( rule__PrimaryExpression__Group_1__0 ) )
-                    // InternalHenshin_text.g:1893:3: ( rule__PrimaryExpression__Group_1__0 )
+                    // InternalHenshin_text.g:1908:2: ( ( rule__PrimaryExpression__Group_1__0 ) )
+                    // InternalHenshin_text.g:1909:3: ( rule__PrimaryExpression__Group_1__0 )
                     {
                      before(grammarAccess.getPrimaryExpressionAccess().getGroup_1()); 
-                    // InternalHenshin_text.g:1894:3: ( rule__PrimaryExpression__Group_1__0 )
-                    // InternalHenshin_text.g:1894:4: rule__PrimaryExpression__Group_1__0
+                    // InternalHenshin_text.g:1910:3: ( rule__PrimaryExpression__Group_1__0 )
+                    // InternalHenshin_text.g:1910:4: rule__PrimaryExpression__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__PrimaryExpression__Group_1__0();
@@ -6268,10 +6319,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:1898:2: ( ruleAtomicExpression )
+                    // InternalHenshin_text.g:1914:2: ( ruleAtomicExpression )
                     {
-                    // InternalHenshin_text.g:1898:2: ( ruleAtomicExpression )
-                    // InternalHenshin_text.g:1899:3: ruleAtomicExpression
+                    // InternalHenshin_text.g:1914:2: ( ruleAtomicExpression )
+                    // InternalHenshin_text.g:1915:3: ruleAtomicExpression
                     {
                      before(grammarAccess.getPrimaryExpressionAccess().getAtomicExpressionParserRuleCall_2()); 
                     pushFollow(FOLLOW_2);
@@ -6304,25 +6355,25 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Alternatives"
-    // InternalHenshin_text.g:1908:1: rule__AtomicExpression__Alternatives : ( ( ( rule__AtomicExpression__Group_0__0 ) ) | ( ( rule__AtomicExpression__Group_1__0 ) ) | ( ( rule__AtomicExpression__Group_2__0 ) ) | ( ( rule__AtomicExpression__Group_3__0 ) ) | ( ( rule__AtomicExpression__Group_4__0 ) ) | ( ( rule__AtomicExpression__Group_5__0 ) ) | ( ( rule__AtomicExpression__Group_6__0 ) ) | ( ( rule__AtomicExpression__Group_7__0 ) ) );
+    // InternalHenshin_text.g:1924:1: rule__AtomicExpression__Alternatives : ( ( ( rule__AtomicExpression__Group_0__0 ) ) | ( ( rule__AtomicExpression__Group_1__0 ) ) | ( ( rule__AtomicExpression__Group_2__0 ) ) | ( ( rule__AtomicExpression__Group_3__0 ) ) | ( ( rule__AtomicExpression__Group_4__0 ) ) | ( ( rule__AtomicExpression__Group_5__0 ) ) | ( ( rule__AtomicExpression__Group_6__0 ) ) | ( ( rule__AtomicExpression__Group_7__0 ) ) );
     public final void rule__AtomicExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1912:1: ( ( ( rule__AtomicExpression__Group_0__0 ) ) | ( ( rule__AtomicExpression__Group_1__0 ) ) | ( ( rule__AtomicExpression__Group_2__0 ) ) | ( ( rule__AtomicExpression__Group_3__0 ) ) | ( ( rule__AtomicExpression__Group_4__0 ) ) | ( ( rule__AtomicExpression__Group_5__0 ) ) | ( ( rule__AtomicExpression__Group_6__0 ) ) | ( ( rule__AtomicExpression__Group_7__0 ) ) )
+            // InternalHenshin_text.g:1928:1: ( ( ( rule__AtomicExpression__Group_0__0 ) ) | ( ( rule__AtomicExpression__Group_1__0 ) ) | ( ( rule__AtomicExpression__Group_2__0 ) ) | ( ( rule__AtomicExpression__Group_3__0 ) ) | ( ( rule__AtomicExpression__Group_4__0 ) ) | ( ( rule__AtomicExpression__Group_5__0 ) ) | ( ( rule__AtomicExpression__Group_6__0 ) ) | ( ( rule__AtomicExpression__Group_7__0 ) ) )
             int alt19=8;
             alt19 = dfa19.predict(input);
             switch (alt19) {
                 case 1 :
-                    // InternalHenshin_text.g:1913:2: ( ( rule__AtomicExpression__Group_0__0 ) )
+                    // InternalHenshin_text.g:1929:2: ( ( rule__AtomicExpression__Group_0__0 ) )
                     {
-                    // InternalHenshin_text.g:1913:2: ( ( rule__AtomicExpression__Group_0__0 ) )
-                    // InternalHenshin_text.g:1914:3: ( rule__AtomicExpression__Group_0__0 )
+                    // InternalHenshin_text.g:1929:2: ( ( rule__AtomicExpression__Group_0__0 ) )
+                    // InternalHenshin_text.g:1930:3: ( rule__AtomicExpression__Group_0__0 )
                     {
                      before(grammarAccess.getAtomicExpressionAccess().getGroup_0()); 
-                    // InternalHenshin_text.g:1915:3: ( rule__AtomicExpression__Group_0__0 )
-                    // InternalHenshin_text.g:1915:4: rule__AtomicExpression__Group_0__0
+                    // InternalHenshin_text.g:1931:3: ( rule__AtomicExpression__Group_0__0 )
+                    // InternalHenshin_text.g:1931:4: rule__AtomicExpression__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AtomicExpression__Group_0__0();
@@ -6340,14 +6391,14 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1919:2: ( ( rule__AtomicExpression__Group_1__0 ) )
+                    // InternalHenshin_text.g:1935:2: ( ( rule__AtomicExpression__Group_1__0 ) )
                     {
-                    // InternalHenshin_text.g:1919:2: ( ( rule__AtomicExpression__Group_1__0 ) )
-                    // InternalHenshin_text.g:1920:3: ( rule__AtomicExpression__Group_1__0 )
+                    // InternalHenshin_text.g:1935:2: ( ( rule__AtomicExpression__Group_1__0 ) )
+                    // InternalHenshin_text.g:1936:3: ( rule__AtomicExpression__Group_1__0 )
                     {
                      before(grammarAccess.getAtomicExpressionAccess().getGroup_1()); 
-                    // InternalHenshin_text.g:1921:3: ( rule__AtomicExpression__Group_1__0 )
-                    // InternalHenshin_text.g:1921:4: rule__AtomicExpression__Group_1__0
+                    // InternalHenshin_text.g:1937:3: ( rule__AtomicExpression__Group_1__0 )
+                    // InternalHenshin_text.g:1937:4: rule__AtomicExpression__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AtomicExpression__Group_1__0();
@@ -6365,14 +6416,14 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:1925:2: ( ( rule__AtomicExpression__Group_2__0 ) )
+                    // InternalHenshin_text.g:1941:2: ( ( rule__AtomicExpression__Group_2__0 ) )
                     {
-                    // InternalHenshin_text.g:1925:2: ( ( rule__AtomicExpression__Group_2__0 ) )
-                    // InternalHenshin_text.g:1926:3: ( rule__AtomicExpression__Group_2__0 )
+                    // InternalHenshin_text.g:1941:2: ( ( rule__AtomicExpression__Group_2__0 ) )
+                    // InternalHenshin_text.g:1942:3: ( rule__AtomicExpression__Group_2__0 )
                     {
                      before(grammarAccess.getAtomicExpressionAccess().getGroup_2()); 
-                    // InternalHenshin_text.g:1927:3: ( rule__AtomicExpression__Group_2__0 )
-                    // InternalHenshin_text.g:1927:4: rule__AtomicExpression__Group_2__0
+                    // InternalHenshin_text.g:1943:3: ( rule__AtomicExpression__Group_2__0 )
+                    // InternalHenshin_text.g:1943:4: rule__AtomicExpression__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AtomicExpression__Group_2__0();
@@ -6390,14 +6441,14 @@
                     }
                     break;
                 case 4 :
-                    // InternalHenshin_text.g:1931:2: ( ( rule__AtomicExpression__Group_3__0 ) )
+                    // InternalHenshin_text.g:1947:2: ( ( rule__AtomicExpression__Group_3__0 ) )
                     {
-                    // InternalHenshin_text.g:1931:2: ( ( rule__AtomicExpression__Group_3__0 ) )
-                    // InternalHenshin_text.g:1932:3: ( rule__AtomicExpression__Group_3__0 )
+                    // InternalHenshin_text.g:1947:2: ( ( rule__AtomicExpression__Group_3__0 ) )
+                    // InternalHenshin_text.g:1948:3: ( rule__AtomicExpression__Group_3__0 )
                     {
                      before(grammarAccess.getAtomicExpressionAccess().getGroup_3()); 
-                    // InternalHenshin_text.g:1933:3: ( rule__AtomicExpression__Group_3__0 )
-                    // InternalHenshin_text.g:1933:4: rule__AtomicExpression__Group_3__0
+                    // InternalHenshin_text.g:1949:3: ( rule__AtomicExpression__Group_3__0 )
+                    // InternalHenshin_text.g:1949:4: rule__AtomicExpression__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AtomicExpression__Group_3__0();
@@ -6415,14 +6466,14 @@
                     }
                     break;
                 case 5 :
-                    // InternalHenshin_text.g:1937:2: ( ( rule__AtomicExpression__Group_4__0 ) )
+                    // InternalHenshin_text.g:1953:2: ( ( rule__AtomicExpression__Group_4__0 ) )
                     {
-                    // InternalHenshin_text.g:1937:2: ( ( rule__AtomicExpression__Group_4__0 ) )
-                    // InternalHenshin_text.g:1938:3: ( rule__AtomicExpression__Group_4__0 )
+                    // InternalHenshin_text.g:1953:2: ( ( rule__AtomicExpression__Group_4__0 ) )
+                    // InternalHenshin_text.g:1954:3: ( rule__AtomicExpression__Group_4__0 )
                     {
                      before(grammarAccess.getAtomicExpressionAccess().getGroup_4()); 
-                    // InternalHenshin_text.g:1939:3: ( rule__AtomicExpression__Group_4__0 )
-                    // InternalHenshin_text.g:1939:4: rule__AtomicExpression__Group_4__0
+                    // InternalHenshin_text.g:1955:3: ( rule__AtomicExpression__Group_4__0 )
+                    // InternalHenshin_text.g:1955:4: rule__AtomicExpression__Group_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AtomicExpression__Group_4__0();
@@ -6440,14 +6491,14 @@
                     }
                     break;
                 case 6 :
-                    // InternalHenshin_text.g:1943:2: ( ( rule__AtomicExpression__Group_5__0 ) )
+                    // InternalHenshin_text.g:1959:2: ( ( rule__AtomicExpression__Group_5__0 ) )
                     {
-                    // InternalHenshin_text.g:1943:2: ( ( rule__AtomicExpression__Group_5__0 ) )
-                    // InternalHenshin_text.g:1944:3: ( rule__AtomicExpression__Group_5__0 )
+                    // InternalHenshin_text.g:1959:2: ( ( rule__AtomicExpression__Group_5__0 ) )
+                    // InternalHenshin_text.g:1960:3: ( rule__AtomicExpression__Group_5__0 )
                     {
                      before(grammarAccess.getAtomicExpressionAccess().getGroup_5()); 
-                    // InternalHenshin_text.g:1945:3: ( rule__AtomicExpression__Group_5__0 )
-                    // InternalHenshin_text.g:1945:4: rule__AtomicExpression__Group_5__0
+                    // InternalHenshin_text.g:1961:3: ( rule__AtomicExpression__Group_5__0 )
+                    // InternalHenshin_text.g:1961:4: rule__AtomicExpression__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AtomicExpression__Group_5__0();
@@ -6465,14 +6516,14 @@
                     }
                     break;
                 case 7 :
-                    // InternalHenshin_text.g:1949:2: ( ( rule__AtomicExpression__Group_6__0 ) )
+                    // InternalHenshin_text.g:1965:2: ( ( rule__AtomicExpression__Group_6__0 ) )
                     {
-                    // InternalHenshin_text.g:1949:2: ( ( rule__AtomicExpression__Group_6__0 ) )
-                    // InternalHenshin_text.g:1950:3: ( rule__AtomicExpression__Group_6__0 )
+                    // InternalHenshin_text.g:1965:2: ( ( rule__AtomicExpression__Group_6__0 ) )
+                    // InternalHenshin_text.g:1966:3: ( rule__AtomicExpression__Group_6__0 )
                     {
                      before(grammarAccess.getAtomicExpressionAccess().getGroup_6()); 
-                    // InternalHenshin_text.g:1951:3: ( rule__AtomicExpression__Group_6__0 )
-                    // InternalHenshin_text.g:1951:4: rule__AtomicExpression__Group_6__0
+                    // InternalHenshin_text.g:1967:3: ( rule__AtomicExpression__Group_6__0 )
+                    // InternalHenshin_text.g:1967:4: rule__AtomicExpression__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AtomicExpression__Group_6__0();
@@ -6490,14 +6541,14 @@
                     }
                     break;
                 case 8 :
-                    // InternalHenshin_text.g:1955:2: ( ( rule__AtomicExpression__Group_7__0 ) )
+                    // InternalHenshin_text.g:1971:2: ( ( rule__AtomicExpression__Group_7__0 ) )
                     {
-                    // InternalHenshin_text.g:1955:2: ( ( rule__AtomicExpression__Group_7__0 ) )
-                    // InternalHenshin_text.g:1956:3: ( rule__AtomicExpression__Group_7__0 )
+                    // InternalHenshin_text.g:1971:2: ( ( rule__AtomicExpression__Group_7__0 ) )
+                    // InternalHenshin_text.g:1972:3: ( rule__AtomicExpression__Group_7__0 )
                     {
                      before(grammarAccess.getAtomicExpressionAccess().getGroup_7()); 
-                    // InternalHenshin_text.g:1957:3: ( rule__AtomicExpression__Group_7__0 )
-                    // InternalHenshin_text.g:1957:4: rule__AtomicExpression__Group_7__0
+                    // InternalHenshin_text.g:1973:3: ( rule__AtomicExpression__Group_7__0 )
+                    // InternalHenshin_text.g:1973:4: rule__AtomicExpression__Group_7__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AtomicExpression__Group_7__0();
@@ -6531,15 +6582,15 @@
     // $ANTLR end "rule__AtomicExpression__Alternatives"
 
 
-    // $ANTLR start "rule__Type__Alternatives"
-    // InternalHenshin_text.g:1965:1: rule__Type__Alternatives : ( ( ( 'EBigDecimal' ) ) | ( ( 'EBigInteger' ) ) | ( ( 'EBoolean' ) ) | ( ( 'EBooleanObject' ) ) | ( ( 'EByte' ) ) | ( ( 'EByteArray' ) ) | ( ( 'EByteObject' ) ) | ( ( 'EChar' ) ) | ( ( 'ECharacterObject' ) ) | ( ( 'EDate' ) ) | ( ( 'EDiagnosticChain' ) ) | ( ( 'EDouble' ) ) | ( ( 'EDoubleObject' ) ) | ( ( 'EEList' ) ) | ( ( 'EEnumerator' ) ) | ( ( 'EFeatureMap' ) ) | ( ( 'EFeatureMapEntry' ) ) | ( ( 'EFloat' ) ) | ( ( 'EFloatObject' ) ) | ( ( 'EInt' ) ) | ( ( 'EIntegerObject' ) ) | ( ( 'ETreeIterator' ) ) | ( ( 'EInvocationTargetException' ) ) | ( ( 'EJavaClass' ) ) | ( ( 'EJavaObject' ) ) | ( ( 'ELong' ) ) | ( ( 'ELongObject' ) ) | ( ( 'EMap' ) ) | ( ( 'EResource' ) ) | ( ( 'EResourceSet' ) ) | ( ( 'EShort' ) ) | ( ( 'EShortObject' ) ) | ( ( 'EString' ) ) );
-    public final void rule__Type__Alternatives() throws RecognitionException {
+    // $ANTLR start "rule__ParameterKindRule__Alternatives"
+    // InternalHenshin_text.g:1981:1: rule__ParameterKindRule__Alternatives : ( ( ( 'IN' ) ) | ( ( 'OUT' ) ) | ( ( 'INOUT' ) ) | ( ( 'VAR' ) ) );
+    public final void rule__ParameterKindRule__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:1969:1: ( ( ( 'EBigDecimal' ) ) | ( ( 'EBigInteger' ) ) | ( ( 'EBoolean' ) ) | ( ( 'EBooleanObject' ) ) | ( ( 'EByte' ) ) | ( ( 'EByteArray' ) ) | ( ( 'EByteObject' ) ) | ( ( 'EChar' ) ) | ( ( 'ECharacterObject' ) ) | ( ( 'EDate' ) ) | ( ( 'EDiagnosticChain' ) ) | ( ( 'EDouble' ) ) | ( ( 'EDoubleObject' ) ) | ( ( 'EEList' ) ) | ( ( 'EEnumerator' ) ) | ( ( 'EFeatureMap' ) ) | ( ( 'EFeatureMapEntry' ) ) | ( ( 'EFloat' ) ) | ( ( 'EFloatObject' ) ) | ( ( 'EInt' ) ) | ( ( 'EIntegerObject' ) ) | ( ( 'ETreeIterator' ) ) | ( ( 'EInvocationTargetException' ) ) | ( ( 'EJavaClass' ) ) | ( ( 'EJavaObject' ) ) | ( ( 'ELong' ) ) | ( ( 'ELongObject' ) ) | ( ( 'EMap' ) ) | ( ( 'EResource' ) ) | ( ( 'EResourceSet' ) ) | ( ( 'EShort' ) ) | ( ( 'EShortObject' ) ) | ( ( 'EString' ) ) )
-            int alt20=33;
+            // InternalHenshin_text.g:1985:1: ( ( ( 'IN' ) ) | ( ( 'OUT' ) ) | ( ( 'INOUT' ) ) | ( ( 'VAR' ) ) )
+            int alt20=4;
             switch ( input.LA(1) ) {
             case 30:
                 {
@@ -6561,151 +6612,6 @@
                 alt20=4;
                 }
                 break;
-            case 34:
-                {
-                alt20=5;
-                }
-                break;
-            case 35:
-                {
-                alt20=6;
-                }
-                break;
-            case 36:
-                {
-                alt20=7;
-                }
-                break;
-            case 37:
-                {
-                alt20=8;
-                }
-                break;
-            case 38:
-                {
-                alt20=9;
-                }
-                break;
-            case 39:
-                {
-                alt20=10;
-                }
-                break;
-            case 40:
-                {
-                alt20=11;
-                }
-                break;
-            case 41:
-                {
-                alt20=12;
-                }
-                break;
-            case 42:
-                {
-                alt20=13;
-                }
-                break;
-            case 43:
-                {
-                alt20=14;
-                }
-                break;
-            case 44:
-                {
-                alt20=15;
-                }
-                break;
-            case 45:
-                {
-                alt20=16;
-                }
-                break;
-            case 46:
-                {
-                alt20=17;
-                }
-                break;
-            case 47:
-                {
-                alt20=18;
-                }
-                break;
-            case 48:
-                {
-                alt20=19;
-                }
-                break;
-            case 49:
-                {
-                alt20=20;
-                }
-                break;
-            case 50:
-                {
-                alt20=21;
-                }
-                break;
-            case 51:
-                {
-                alt20=22;
-                }
-                break;
-            case 52:
-                {
-                alt20=23;
-                }
-                break;
-            case 53:
-                {
-                alt20=24;
-                }
-                break;
-            case 54:
-                {
-                alt20=25;
-                }
-                break;
-            case 55:
-                {
-                alt20=26;
-                }
-                break;
-            case 56:
-                {
-                alt20=27;
-                }
-                break;
-            case 57:
-                {
-                alt20=28;
-                }
-                break;
-            case 58:
-                {
-                alt20=29;
-                }
-                break;
-            case 59:
-                {
-                alt20=30;
-                }
-                break;
-            case 60:
-                {
-                alt20=31;
-                }
-                break;
-            case 61:
-                {
-                alt20=32;
-                }
-                break;
-            case 62:
-                {
-                alt20=33;
-                }
-                break;
             default:
                 NoViableAltException nvae =
                     new NoViableAltException("", 20, 0, input);
@@ -6715,19 +6621,303 @@
 
             switch (alt20) {
                 case 1 :
-                    // InternalHenshin_text.g:1970:2: ( ( 'EBigDecimal' ) )
+                    // InternalHenshin_text.g:1986:2: ( ( 'IN' ) )
                     {
-                    // InternalHenshin_text.g:1970:2: ( ( 'EBigDecimal' ) )
-                    // InternalHenshin_text.g:1971:3: ( 'EBigDecimal' )
+                    // InternalHenshin_text.g:1986:2: ( ( 'IN' ) )
+                    // InternalHenshin_text.g:1987:3: ( 'IN' )
                     {
-                     before(grammarAccess.getTypeAccess().getEBigDecimalEnumLiteralDeclaration_0()); 
-                    // InternalHenshin_text.g:1972:3: ( 'EBigDecimal' )
-                    // InternalHenshin_text.g:1972:4: 'EBigDecimal'
+                     before(grammarAccess.getParameterKindRuleAccess().getINEnumLiteralDeclaration_0()); 
+                    // InternalHenshin_text.g:1988:3: ( 'IN' )
+                    // InternalHenshin_text.g:1988:4: 'IN'
                     {
                     match(input,30,FOLLOW_2); 
 
                     }
 
+                     after(grammarAccess.getParameterKindRuleAccess().getINEnumLiteralDeclaration_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalHenshin_text.g:1992:2: ( ( 'OUT' ) )
+                    {
+                    // InternalHenshin_text.g:1992:2: ( ( 'OUT' ) )
+                    // InternalHenshin_text.g:1993:3: ( 'OUT' )
+                    {
+                     before(grammarAccess.getParameterKindRuleAccess().getOUTEnumLiteralDeclaration_1()); 
+                    // InternalHenshin_text.g:1994:3: ( 'OUT' )
+                    // InternalHenshin_text.g:1994:4: 'OUT'
+                    {
+                    match(input,31,FOLLOW_2); 
+
+                    }
+
+                     after(grammarAccess.getParameterKindRuleAccess().getOUTEnumLiteralDeclaration_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalHenshin_text.g:1998:2: ( ( 'INOUT' ) )
+                    {
+                    // InternalHenshin_text.g:1998:2: ( ( 'INOUT' ) )
+                    // InternalHenshin_text.g:1999:3: ( 'INOUT' )
+                    {
+                     before(grammarAccess.getParameterKindRuleAccess().getINOUTEnumLiteralDeclaration_2()); 
+                    // InternalHenshin_text.g:2000:3: ( 'INOUT' )
+                    // InternalHenshin_text.g:2000:4: 'INOUT'
+                    {
+                    match(input,32,FOLLOW_2); 
+
+                    }
+
+                     after(grammarAccess.getParameterKindRuleAccess().getINOUTEnumLiteralDeclaration_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalHenshin_text.g:2004:2: ( ( 'VAR' ) )
+                    {
+                    // InternalHenshin_text.g:2004:2: ( ( 'VAR' ) )
+                    // InternalHenshin_text.g:2005:3: ( 'VAR' )
+                    {
+                     before(grammarAccess.getParameterKindRuleAccess().getVAREnumLiteralDeclaration_3()); 
+                    // InternalHenshin_text.g:2006:3: ( 'VAR' )
+                    // InternalHenshin_text.g:2006:4: 'VAR'
+                    {
+                    match(input,33,FOLLOW_2); 
+
+                    }
+
+                     after(grammarAccess.getParameterKindRuleAccess().getVAREnumLiteralDeclaration_3()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ParameterKindRule__Alternatives"
+
+
+    // $ANTLR start "rule__Type__Alternatives"
+    // InternalHenshin_text.g:2014:1: rule__Type__Alternatives : ( ( ( 'EBigDecimal' ) ) | ( ( 'EBigInteger' ) ) | ( ( 'EBoolean' ) ) | ( ( 'EBooleanObject' ) ) | ( ( 'EByte' ) ) | ( ( 'EByteArray' ) ) | ( ( 'EByteObject' ) ) | ( ( 'EChar' ) ) | ( ( 'ECharacterObject' ) ) | ( ( 'EDate' ) ) | ( ( 'EDiagnosticChain' ) ) | ( ( 'EDouble' ) ) | ( ( 'EDoubleObject' ) ) | ( ( 'EEList' ) ) | ( ( 'EEnumerator' ) ) | ( ( 'EFeatureMap' ) ) | ( ( 'EFeatureMapEntry' ) ) | ( ( 'EFloat' ) ) | ( ( 'EFloatObject' ) ) | ( ( 'EInt' ) ) | ( ( 'EIntegerObject' ) ) | ( ( 'ETreeIterator' ) ) | ( ( 'EInvocationTargetException' ) ) | ( ( 'EJavaClass' ) ) | ( ( 'EJavaObject' ) ) | ( ( 'ELong' ) ) | ( ( 'ELongObject' ) ) | ( ( 'EMap' ) ) | ( ( 'EResource' ) ) | ( ( 'EResourceSet' ) ) | ( ( 'EShort' ) ) | ( ( 'EShortObject' ) ) | ( ( 'EString' ) ) );
+    public final void rule__Type__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalHenshin_text.g:2018:1: ( ( ( 'EBigDecimal' ) ) | ( ( 'EBigInteger' ) ) | ( ( 'EBoolean' ) ) | ( ( 'EBooleanObject' ) ) | ( ( 'EByte' ) ) | ( ( 'EByteArray' ) ) | ( ( 'EByteObject' ) ) | ( ( 'EChar' ) ) | ( ( 'ECharacterObject' ) ) | ( ( 'EDate' ) ) | ( ( 'EDiagnosticChain' ) ) | ( ( 'EDouble' ) ) | ( ( 'EDoubleObject' ) ) | ( ( 'EEList' ) ) | ( ( 'EEnumerator' ) ) | ( ( 'EFeatureMap' ) ) | ( ( 'EFeatureMapEntry' ) ) | ( ( 'EFloat' ) ) | ( ( 'EFloatObject' ) ) | ( ( 'EInt' ) ) | ( ( 'EIntegerObject' ) ) | ( ( 'ETreeIterator' ) ) | ( ( 'EInvocationTargetException' ) ) | ( ( 'EJavaClass' ) ) | ( ( 'EJavaObject' ) ) | ( ( 'ELong' ) ) | ( ( 'ELongObject' ) ) | ( ( 'EMap' ) ) | ( ( 'EResource' ) ) | ( ( 'EResourceSet' ) ) | ( ( 'EShort' ) ) | ( ( 'EShortObject' ) ) | ( ( 'EString' ) ) )
+            int alt21=33;
+            switch ( input.LA(1) ) {
+            case 34:
+                {
+                alt21=1;
+                }
+                break;
+            case 35:
+                {
+                alt21=2;
+                }
+                break;
+            case 36:
+                {
+                alt21=3;
+                }
+                break;
+            case 37:
+                {
+                alt21=4;
+                }
+                break;
+            case 38:
+                {
+                alt21=5;
+                }
+                break;
+            case 39:
+                {
+                alt21=6;
+                }
+                break;
+            case 40:
+                {
+                alt21=7;
+                }
+                break;
+            case 41:
+                {
+                alt21=8;
+                }
+                break;
+            case 42:
+                {
+                alt21=9;
+                }
+                break;
+            case 43:
+                {
+                alt21=10;
+                }
+                break;
+            case 44:
+                {
+                alt21=11;
+                }
+                break;
+            case 45:
+                {
+                alt21=12;
+                }
+                break;
+            case 46:
+                {
+                alt21=13;
+                }
+                break;
+            case 47:
+                {
+                alt21=14;
+                }
+                break;
+            case 48:
+                {
+                alt21=15;
+                }
+                break;
+            case 49:
+                {
+                alt21=16;
+                }
+                break;
+            case 50:
+                {
+                alt21=17;
+                }
+                break;
+            case 51:
+                {
+                alt21=18;
+                }
+                break;
+            case 52:
+                {
+                alt21=19;
+                }
+                break;
+            case 53:
+                {
+                alt21=20;
+                }
+                break;
+            case 54:
+                {
+                alt21=21;
+                }
+                break;
+            case 55:
+                {
+                alt21=22;
+                }
+                break;
+            case 56:
+                {
+                alt21=23;
+                }
+                break;
+            case 57:
+                {
+                alt21=24;
+                }
+                break;
+            case 58:
+                {
+                alt21=25;
+                }
+                break;
+            case 59:
+                {
+                alt21=26;
+                }
+                break;
+            case 60:
+                {
+                alt21=27;
+                }
+                break;
+            case 61:
+                {
+                alt21=28;
+                }
+                break;
+            case 62:
+                {
+                alt21=29;
+                }
+                break;
+            case 63:
+                {
+                alt21=30;
+                }
+                break;
+            case 64:
+                {
+                alt21=31;
+                }
+                break;
+            case 65:
+                {
+                alt21=32;
+                }
+                break;
+            case 66:
+                {
+                alt21=33;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 21, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt21) {
+                case 1 :
+                    // InternalHenshin_text.g:2019:2: ( ( 'EBigDecimal' ) )
+                    {
+                    // InternalHenshin_text.g:2019:2: ( ( 'EBigDecimal' ) )
+                    // InternalHenshin_text.g:2020:3: ( 'EBigDecimal' )
+                    {
+                     before(grammarAccess.getTypeAccess().getEBigDecimalEnumLiteralDeclaration_0()); 
+                    // InternalHenshin_text.g:2021:3: ( 'EBigDecimal' )
+                    // InternalHenshin_text.g:2021:4: 'EBigDecimal'
+                    {
+                    match(input,34,FOLLOW_2); 
+
+                    }
+
                      after(grammarAccess.getTypeAccess().getEBigDecimalEnumLiteralDeclaration_0()); 
 
                     }
@@ -6736,16 +6926,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:1976:2: ( ( 'EBigInteger' ) )
+                    // InternalHenshin_text.g:2025:2: ( ( 'EBigInteger' ) )
                     {
-                    // InternalHenshin_text.g:1976:2: ( ( 'EBigInteger' ) )
-                    // InternalHenshin_text.g:1977:3: ( 'EBigInteger' )
+                    // InternalHenshin_text.g:2025:2: ( ( 'EBigInteger' ) )
+                    // InternalHenshin_text.g:2026:3: ( 'EBigInteger' )
                     {
                      before(grammarAccess.getTypeAccess().getEBigIntegerEnumLiteralDeclaration_1()); 
-                    // InternalHenshin_text.g:1978:3: ( 'EBigInteger' )
-                    // InternalHenshin_text.g:1978:4: 'EBigInteger'
+                    // InternalHenshin_text.g:2027:3: ( 'EBigInteger' )
+                    // InternalHenshin_text.g:2027:4: 'EBigInteger'
                     {
-                    match(input,31,FOLLOW_2); 
+                    match(input,35,FOLLOW_2); 
 
                     }
 
@@ -6757,16 +6947,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:1982:2: ( ( 'EBoolean' ) )
+                    // InternalHenshin_text.g:2031:2: ( ( 'EBoolean' ) )
                     {
-                    // InternalHenshin_text.g:1982:2: ( ( 'EBoolean' ) )
-                    // InternalHenshin_text.g:1983:3: ( 'EBoolean' )
+                    // InternalHenshin_text.g:2031:2: ( ( 'EBoolean' ) )
+                    // InternalHenshin_text.g:2032:3: ( 'EBoolean' )
                     {
                      before(grammarAccess.getTypeAccess().getEBooleanEnumLiteralDeclaration_2()); 
-                    // InternalHenshin_text.g:1984:3: ( 'EBoolean' )
-                    // InternalHenshin_text.g:1984:4: 'EBoolean'
+                    // InternalHenshin_text.g:2033:3: ( 'EBoolean' )
+                    // InternalHenshin_text.g:2033:4: 'EBoolean'
                     {
-                    match(input,32,FOLLOW_2); 
+                    match(input,36,FOLLOW_2); 
 
                     }
 
@@ -6778,16 +6968,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalHenshin_text.g:1988:2: ( ( 'EBooleanObject' ) )
+                    // InternalHenshin_text.g:2037:2: ( ( 'EBooleanObject' ) )
                     {
-                    // InternalHenshin_text.g:1988:2: ( ( 'EBooleanObject' ) )
-                    // InternalHenshin_text.g:1989:3: ( 'EBooleanObject' )
+                    // InternalHenshin_text.g:2037:2: ( ( 'EBooleanObject' ) )
+                    // InternalHenshin_text.g:2038:3: ( 'EBooleanObject' )
                     {
                      before(grammarAccess.getTypeAccess().getEBooleanObjectEnumLiteralDeclaration_3()); 
-                    // InternalHenshin_text.g:1990:3: ( 'EBooleanObject' )
-                    // InternalHenshin_text.g:1990:4: 'EBooleanObject'
+                    // InternalHenshin_text.g:2039:3: ( 'EBooleanObject' )
+                    // InternalHenshin_text.g:2039:4: 'EBooleanObject'
                     {
-                    match(input,33,FOLLOW_2); 
+                    match(input,37,FOLLOW_2); 
 
                     }
 
@@ -6799,16 +6989,16 @@
                     }
                     break;
                 case 5 :
-                    // InternalHenshin_text.g:1994:2: ( ( 'EByte' ) )
+                    // InternalHenshin_text.g:2043:2: ( ( 'EByte' ) )
                     {
-                    // InternalHenshin_text.g:1994:2: ( ( 'EByte' ) )
-                    // InternalHenshin_text.g:1995:3: ( 'EByte' )
+                    // InternalHenshin_text.g:2043:2: ( ( 'EByte' ) )
+                    // InternalHenshin_text.g:2044:3: ( 'EByte' )
                     {
                      before(grammarAccess.getTypeAccess().getEByteEnumLiteralDeclaration_4()); 
-                    // InternalHenshin_text.g:1996:3: ( 'EByte' )
-                    // InternalHenshin_text.g:1996:4: 'EByte'
+                    // InternalHenshin_text.g:2045:3: ( 'EByte' )
+                    // InternalHenshin_text.g:2045:4: 'EByte'
                     {
-                    match(input,34,FOLLOW_2); 
+                    match(input,38,FOLLOW_2); 
 
                     }
 
@@ -6820,16 +7010,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalHenshin_text.g:2000:2: ( ( 'EByteArray' ) )
+                    // InternalHenshin_text.g:2049:2: ( ( 'EByteArray' ) )
                     {
-                    // InternalHenshin_text.g:2000:2: ( ( 'EByteArray' ) )
-                    // InternalHenshin_text.g:2001:3: ( 'EByteArray' )
+                    // InternalHenshin_text.g:2049:2: ( ( 'EByteArray' ) )
+                    // InternalHenshin_text.g:2050:3: ( 'EByteArray' )
                     {
                      before(grammarAccess.getTypeAccess().getEByteArrayEnumLiteralDeclaration_5()); 
-                    // InternalHenshin_text.g:2002:3: ( 'EByteArray' )
-                    // InternalHenshin_text.g:2002:4: 'EByteArray'
+                    // InternalHenshin_text.g:2051:3: ( 'EByteArray' )
+                    // InternalHenshin_text.g:2051:4: 'EByteArray'
                     {
-                    match(input,35,FOLLOW_2); 
+                    match(input,39,FOLLOW_2); 
 
                     }
 
@@ -6841,16 +7031,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalHenshin_text.g:2006:2: ( ( 'EByteObject' ) )
+                    // InternalHenshin_text.g:2055:2: ( ( 'EByteObject' ) )
                     {
-                    // InternalHenshin_text.g:2006:2: ( ( 'EByteObject' ) )
-                    // InternalHenshin_text.g:2007:3: ( 'EByteObject' )
+                    // InternalHenshin_text.g:2055:2: ( ( 'EByteObject' ) )
+                    // InternalHenshin_text.g:2056:3: ( 'EByteObject' )
                     {
                      before(grammarAccess.getTypeAccess().getEByteObjectEnumLiteralDeclaration_6()); 
-                    // InternalHenshin_text.g:2008:3: ( 'EByteObject' )
-                    // InternalHenshin_text.g:2008:4: 'EByteObject'
+                    // InternalHenshin_text.g:2057:3: ( 'EByteObject' )
+                    // InternalHenshin_text.g:2057:4: 'EByteObject'
                     {
-                    match(input,36,FOLLOW_2); 
+                    match(input,40,FOLLOW_2); 
 
                     }
 
@@ -6862,16 +7052,16 @@
                     }
                     break;
                 case 8 :
-                    // InternalHenshin_text.g:2012:2: ( ( 'EChar' ) )
+                    // InternalHenshin_text.g:2061:2: ( ( 'EChar' ) )
                     {
-                    // InternalHenshin_text.g:2012:2: ( ( 'EChar' ) )
-                    // InternalHenshin_text.g:2013:3: ( 'EChar' )
+                    // InternalHenshin_text.g:2061:2: ( ( 'EChar' ) )
+                    // InternalHenshin_text.g:2062:3: ( 'EChar' )
                     {
                      before(grammarAccess.getTypeAccess().getECharEnumLiteralDeclaration_7()); 
-                    // InternalHenshin_text.g:2014:3: ( 'EChar' )
-                    // InternalHenshin_text.g:2014:4: 'EChar'
+                    // InternalHenshin_text.g:2063:3: ( 'EChar' )
+                    // InternalHenshin_text.g:2063:4: 'EChar'
                     {
-                    match(input,37,FOLLOW_2); 
+                    match(input,41,FOLLOW_2); 
 
                     }
 
@@ -6883,16 +7073,16 @@
                     }
                     break;
                 case 9 :
-                    // InternalHenshin_text.g:2018:2: ( ( 'ECharacterObject' ) )
+                    // InternalHenshin_text.g:2067:2: ( ( 'ECharacterObject' ) )
                     {
-                    // InternalHenshin_text.g:2018:2: ( ( 'ECharacterObject' ) )
-                    // InternalHenshin_text.g:2019:3: ( 'ECharacterObject' )
+                    // InternalHenshin_text.g:2067:2: ( ( 'ECharacterObject' ) )
+                    // InternalHenshin_text.g:2068:3: ( 'ECharacterObject' )
                     {
                      before(grammarAccess.getTypeAccess().getECharacterObjectEnumLiteralDeclaration_8()); 
-                    // InternalHenshin_text.g:2020:3: ( 'ECharacterObject' )
-                    // InternalHenshin_text.g:2020:4: 'ECharacterObject'
+                    // InternalHenshin_text.g:2069:3: ( 'ECharacterObject' )
+                    // InternalHenshin_text.g:2069:4: 'ECharacterObject'
                     {
-                    match(input,38,FOLLOW_2); 
+                    match(input,42,FOLLOW_2); 
 
                     }
 
@@ -6904,16 +7094,16 @@
                     }
                     break;
                 case 10 :
-                    // InternalHenshin_text.g:2024:2: ( ( 'EDate' ) )
+                    // InternalHenshin_text.g:2073:2: ( ( 'EDate' ) )
                     {
-                    // InternalHenshin_text.g:2024:2: ( ( 'EDate' ) )
-                    // InternalHenshin_text.g:2025:3: ( 'EDate' )
+                    // InternalHenshin_text.g:2073:2: ( ( 'EDate' ) )
+                    // InternalHenshin_text.g:2074:3: ( 'EDate' )
                     {
                      before(grammarAccess.getTypeAccess().getEDateEnumLiteralDeclaration_9()); 
-                    // InternalHenshin_text.g:2026:3: ( 'EDate' )
-                    // InternalHenshin_text.g:2026:4: 'EDate'
+                    // InternalHenshin_text.g:2075:3: ( 'EDate' )
+                    // InternalHenshin_text.g:2075:4: 'EDate'
                     {
-                    match(input,39,FOLLOW_2); 
+                    match(input,43,FOLLOW_2); 
 
                     }
 
@@ -6925,16 +7115,16 @@
                     }
                     break;
                 case 11 :
-                    // InternalHenshin_text.g:2030:2: ( ( 'EDiagnosticChain' ) )
+                    // InternalHenshin_text.g:2079:2: ( ( 'EDiagnosticChain' ) )
                     {
-                    // InternalHenshin_text.g:2030:2: ( ( 'EDiagnosticChain' ) )
-                    // InternalHenshin_text.g:2031:3: ( 'EDiagnosticChain' )
+                    // InternalHenshin_text.g:2079:2: ( ( 'EDiagnosticChain' ) )
+                    // InternalHenshin_text.g:2080:3: ( 'EDiagnosticChain' )
                     {
                      before(grammarAccess.getTypeAccess().getEDiagnosticChainEnumLiteralDeclaration_10()); 
-                    // InternalHenshin_text.g:2032:3: ( 'EDiagnosticChain' )
-                    // InternalHenshin_text.g:2032:4: 'EDiagnosticChain'
+                    // InternalHenshin_text.g:2081:3: ( 'EDiagnosticChain' )
+                    // InternalHenshin_text.g:2081:4: 'EDiagnosticChain'
                     {
-                    match(input,40,FOLLOW_2); 
+                    match(input,44,FOLLOW_2); 
 
                     }
 
@@ -6946,16 +7136,16 @@
                     }
                     break;
                 case 12 :
-                    // InternalHenshin_text.g:2036:2: ( ( 'EDouble' ) )
+                    // InternalHenshin_text.g:2085:2: ( ( 'EDouble' ) )
                     {
-                    // InternalHenshin_text.g:2036:2: ( ( 'EDouble' ) )
-                    // InternalHenshin_text.g:2037:3: ( 'EDouble' )
+                    // InternalHenshin_text.g:2085:2: ( ( 'EDouble' ) )
+                    // InternalHenshin_text.g:2086:3: ( 'EDouble' )
                     {
                      before(grammarAccess.getTypeAccess().getEDoubleEnumLiteralDeclaration_11()); 
-                    // InternalHenshin_text.g:2038:3: ( 'EDouble' )
-                    // InternalHenshin_text.g:2038:4: 'EDouble'
+                    // InternalHenshin_text.g:2087:3: ( 'EDouble' )
+                    // InternalHenshin_text.g:2087:4: 'EDouble'
                     {
-                    match(input,41,FOLLOW_2); 
+                    match(input,45,FOLLOW_2); 
 
                     }
 
@@ -6967,16 +7157,16 @@
                     }
                     break;
                 case 13 :
-                    // InternalHenshin_text.g:2042:2: ( ( 'EDoubleObject' ) )
+                    // InternalHenshin_text.g:2091:2: ( ( 'EDoubleObject' ) )
                     {
-                    // InternalHenshin_text.g:2042:2: ( ( 'EDoubleObject' ) )
-                    // InternalHenshin_text.g:2043:3: ( 'EDoubleObject' )
+                    // InternalHenshin_text.g:2091:2: ( ( 'EDoubleObject' ) )
+                    // InternalHenshin_text.g:2092:3: ( 'EDoubleObject' )
                     {
                      before(grammarAccess.getTypeAccess().getEDoubleObjectEnumLiteralDeclaration_12()); 
-                    // InternalHenshin_text.g:2044:3: ( 'EDoubleObject' )
-                    // InternalHenshin_text.g:2044:4: 'EDoubleObject'
+                    // InternalHenshin_text.g:2093:3: ( 'EDoubleObject' )
+                    // InternalHenshin_text.g:2093:4: 'EDoubleObject'
                     {
-                    match(input,42,FOLLOW_2); 
+                    match(input,46,FOLLOW_2); 
 
                     }
 
@@ -6988,16 +7178,16 @@
                     }
                     break;
                 case 14 :
-                    // InternalHenshin_text.g:2048:2: ( ( 'EEList' ) )
+                    // InternalHenshin_text.g:2097:2: ( ( 'EEList' ) )
                     {
-                    // InternalHenshin_text.g:2048:2: ( ( 'EEList' ) )
-                    // InternalHenshin_text.g:2049:3: ( 'EEList' )
+                    // InternalHenshin_text.g:2097:2: ( ( 'EEList' ) )
+                    // InternalHenshin_text.g:2098:3: ( 'EEList' )
                     {
                      before(grammarAccess.getTypeAccess().getEEListEnumLiteralDeclaration_13()); 
-                    // InternalHenshin_text.g:2050:3: ( 'EEList' )
-                    // InternalHenshin_text.g:2050:4: 'EEList'
+                    // InternalHenshin_text.g:2099:3: ( 'EEList' )
+                    // InternalHenshin_text.g:2099:4: 'EEList'
                     {
-                    match(input,43,FOLLOW_2); 
+                    match(input,47,FOLLOW_2); 
 
                     }
 
@@ -7009,16 +7199,16 @@
                     }
                     break;
                 case 15 :
-                    // InternalHenshin_text.g:2054:2: ( ( 'EEnumerator' ) )
+                    // InternalHenshin_text.g:2103:2: ( ( 'EEnumerator' ) )
                     {
-                    // InternalHenshin_text.g:2054:2: ( ( 'EEnumerator' ) )
-                    // InternalHenshin_text.g:2055:3: ( 'EEnumerator' )
+                    // InternalHenshin_text.g:2103:2: ( ( 'EEnumerator' ) )
+                    // InternalHenshin_text.g:2104:3: ( 'EEnumerator' )
                     {
                      before(grammarAccess.getTypeAccess().getEEnumeratorEnumLiteralDeclaration_14()); 
-                    // InternalHenshin_text.g:2056:3: ( 'EEnumerator' )
-                    // InternalHenshin_text.g:2056:4: 'EEnumerator'
+                    // InternalHenshin_text.g:2105:3: ( 'EEnumerator' )
+                    // InternalHenshin_text.g:2105:4: 'EEnumerator'
                     {
-                    match(input,44,FOLLOW_2); 
+                    match(input,48,FOLLOW_2); 
 
                     }
 
@@ -7030,16 +7220,16 @@
                     }
                     break;
                 case 16 :
-                    // InternalHenshin_text.g:2060:2: ( ( 'EFeatureMap' ) )
+                    // InternalHenshin_text.g:2109:2: ( ( 'EFeatureMap' ) )
                     {
-                    // InternalHenshin_text.g:2060:2: ( ( 'EFeatureMap' ) )
-                    // InternalHenshin_text.g:2061:3: ( 'EFeatureMap' )
+                    // InternalHenshin_text.g:2109:2: ( ( 'EFeatureMap' ) )
+                    // InternalHenshin_text.g:2110:3: ( 'EFeatureMap' )
                     {
                      before(grammarAccess.getTypeAccess().getEFeatureMapEnumLiteralDeclaration_15()); 
-                    // InternalHenshin_text.g:2062:3: ( 'EFeatureMap' )
-                    // InternalHenshin_text.g:2062:4: 'EFeatureMap'
+                    // InternalHenshin_text.g:2111:3: ( 'EFeatureMap' )
+                    // InternalHenshin_text.g:2111:4: 'EFeatureMap'
                     {
-                    match(input,45,FOLLOW_2); 
+                    match(input,49,FOLLOW_2); 
 
                     }
 
@@ -7051,16 +7241,16 @@
                     }
                     break;
                 case 17 :
-                    // InternalHenshin_text.g:2066:2: ( ( 'EFeatureMapEntry' ) )
+                    // InternalHenshin_text.g:2115:2: ( ( 'EFeatureMapEntry' ) )
                     {
-                    // InternalHenshin_text.g:2066:2: ( ( 'EFeatureMapEntry' ) )
-                    // InternalHenshin_text.g:2067:3: ( 'EFeatureMapEntry' )
+                    // InternalHenshin_text.g:2115:2: ( ( 'EFeatureMapEntry' ) )
+                    // InternalHenshin_text.g:2116:3: ( 'EFeatureMapEntry' )
                     {
                      before(grammarAccess.getTypeAccess().getEFeatureMapEntryEnumLiteralDeclaration_16()); 
-                    // InternalHenshin_text.g:2068:3: ( 'EFeatureMapEntry' )
-                    // InternalHenshin_text.g:2068:4: 'EFeatureMapEntry'
+                    // InternalHenshin_text.g:2117:3: ( 'EFeatureMapEntry' )
+                    // InternalHenshin_text.g:2117:4: 'EFeatureMapEntry'
                     {
-                    match(input,46,FOLLOW_2); 
+                    match(input,50,FOLLOW_2); 
 
                     }
 
@@ -7072,16 +7262,16 @@
                     }
                     break;
                 case 18 :
-                    // InternalHenshin_text.g:2072:2: ( ( 'EFloat' ) )
+                    // InternalHenshin_text.g:2121:2: ( ( 'EFloat' ) )
                     {
-                    // InternalHenshin_text.g:2072:2: ( ( 'EFloat' ) )
-                    // InternalHenshin_text.g:2073:3: ( 'EFloat' )
+                    // InternalHenshin_text.g:2121:2: ( ( 'EFloat' ) )
+                    // InternalHenshin_text.g:2122:3: ( 'EFloat' )
                     {
                      before(grammarAccess.getTypeAccess().getEFloatEnumLiteralDeclaration_17()); 
-                    // InternalHenshin_text.g:2074:3: ( 'EFloat' )
-                    // InternalHenshin_text.g:2074:4: 'EFloat'
+                    // InternalHenshin_text.g:2123:3: ( 'EFloat' )
+                    // InternalHenshin_text.g:2123:4: 'EFloat'
                     {
-                    match(input,47,FOLLOW_2); 
+                    match(input,51,FOLLOW_2); 
 
                     }
 
@@ -7093,16 +7283,16 @@
                     }
                     break;
                 case 19 :
-                    // InternalHenshin_text.g:2078:2: ( ( 'EFloatObject' ) )
+                    // InternalHenshin_text.g:2127:2: ( ( 'EFloatObject' ) )
                     {
-                    // InternalHenshin_text.g:2078:2: ( ( 'EFloatObject' ) )
-                    // InternalHenshin_text.g:2079:3: ( 'EFloatObject' )
+                    // InternalHenshin_text.g:2127:2: ( ( 'EFloatObject' ) )
+                    // InternalHenshin_text.g:2128:3: ( 'EFloatObject' )
                     {
                      before(grammarAccess.getTypeAccess().getEFloatObjectEnumLiteralDeclaration_18()); 
-                    // InternalHenshin_text.g:2080:3: ( 'EFloatObject' )
-                    // InternalHenshin_text.g:2080:4: 'EFloatObject'
+                    // InternalHenshin_text.g:2129:3: ( 'EFloatObject' )
+                    // InternalHenshin_text.g:2129:4: 'EFloatObject'
                     {
-                    match(input,48,FOLLOW_2); 
+                    match(input,52,FOLLOW_2); 
 
                     }
 
@@ -7114,16 +7304,16 @@
                     }
                     break;
                 case 20 :
-                    // InternalHenshin_text.g:2084:2: ( ( 'EInt' ) )
+                    // InternalHenshin_text.g:2133:2: ( ( 'EInt' ) )
                     {
-                    // InternalHenshin_text.g:2084:2: ( ( 'EInt' ) )
-                    // InternalHenshin_text.g:2085:3: ( 'EInt' )
+                    // InternalHenshin_text.g:2133:2: ( ( 'EInt' ) )
+                    // InternalHenshin_text.g:2134:3: ( 'EInt' )
                     {
                      before(grammarAccess.getTypeAccess().getEIntEnumLiteralDeclaration_19()); 
-                    // InternalHenshin_text.g:2086:3: ( 'EInt' )
-                    // InternalHenshin_text.g:2086:4: 'EInt'
+                    // InternalHenshin_text.g:2135:3: ( 'EInt' )
+                    // InternalHenshin_text.g:2135:4: 'EInt'
                     {
-                    match(input,49,FOLLOW_2); 
+                    match(input,53,FOLLOW_2); 
 
                     }
 
@@ -7135,16 +7325,16 @@
                     }
                     break;
                 case 21 :
-                    // InternalHenshin_text.g:2090:2: ( ( 'EIntegerObject' ) )
+                    // InternalHenshin_text.g:2139:2: ( ( 'EIntegerObject' ) )
                     {
-                    // InternalHenshin_text.g:2090:2: ( ( 'EIntegerObject' ) )
-                    // InternalHenshin_text.g:2091:3: ( 'EIntegerObject' )
+                    // InternalHenshin_text.g:2139:2: ( ( 'EIntegerObject' ) )
+                    // InternalHenshin_text.g:2140:3: ( 'EIntegerObject' )
                     {
                      before(grammarAccess.getTypeAccess().getEIntegerObjectEnumLiteralDeclaration_20()); 
-                    // InternalHenshin_text.g:2092:3: ( 'EIntegerObject' )
-                    // InternalHenshin_text.g:2092:4: 'EIntegerObject'
+                    // InternalHenshin_text.g:2141:3: ( 'EIntegerObject' )
+                    // InternalHenshin_text.g:2141:4: 'EIntegerObject'
                     {
-                    match(input,50,FOLLOW_2); 
+                    match(input,54,FOLLOW_2); 
 
                     }
 
@@ -7156,16 +7346,16 @@
                     }
                     break;
                 case 22 :
-                    // InternalHenshin_text.g:2096:2: ( ( 'ETreeIterator' ) )
+                    // InternalHenshin_text.g:2145:2: ( ( 'ETreeIterator' ) )
                     {
-                    // InternalHenshin_text.g:2096:2: ( ( 'ETreeIterator' ) )
-                    // InternalHenshin_text.g:2097:3: ( 'ETreeIterator' )
+                    // InternalHenshin_text.g:2145:2: ( ( 'ETreeIterator' ) )
+                    // InternalHenshin_text.g:2146:3: ( 'ETreeIterator' )
                     {
                      before(grammarAccess.getTypeAccess().getETreeIteratorEnumLiteralDeclaration_21()); 
-                    // InternalHenshin_text.g:2098:3: ( 'ETreeIterator' )
-                    // InternalHenshin_text.g:2098:4: 'ETreeIterator'
+                    // InternalHenshin_text.g:2147:3: ( 'ETreeIterator' )
+                    // InternalHenshin_text.g:2147:4: 'ETreeIterator'
                     {
-                    match(input,51,FOLLOW_2); 
+                    match(input,55,FOLLOW_2); 
 
                     }
 
@@ -7177,16 +7367,16 @@
                     }
                     break;
                 case 23 :
-                    // InternalHenshin_text.g:2102:2: ( ( 'EInvocationTargetException' ) )
+                    // InternalHenshin_text.g:2151:2: ( ( 'EInvocationTargetException' ) )
                     {
-                    // InternalHenshin_text.g:2102:2: ( ( 'EInvocationTargetException' ) )
-                    // InternalHenshin_text.g:2103:3: ( 'EInvocationTargetException' )
+                    // InternalHenshin_text.g:2151:2: ( ( 'EInvocationTargetException' ) )
+                    // InternalHenshin_text.g:2152:3: ( 'EInvocationTargetException' )
                     {
                      before(grammarAccess.getTypeAccess().getEInvocationTargetExceptionEnumLiteralDeclaration_22()); 
-                    // InternalHenshin_text.g:2104:3: ( 'EInvocationTargetException' )
-                    // InternalHenshin_text.g:2104:4: 'EInvocationTargetException'
+                    // InternalHenshin_text.g:2153:3: ( 'EInvocationTargetException' )
+                    // InternalHenshin_text.g:2153:4: 'EInvocationTargetException'
                     {
-                    match(input,52,FOLLOW_2); 
+                    match(input,56,FOLLOW_2); 
 
                     }
 
@@ -7198,16 +7388,16 @@
                     }
                     break;
                 case 24 :
-                    // InternalHenshin_text.g:2108:2: ( ( 'EJavaClass' ) )
+                    // InternalHenshin_text.g:2157:2: ( ( 'EJavaClass' ) )
                     {
-                    // InternalHenshin_text.g:2108:2: ( ( 'EJavaClass' ) )
-                    // InternalHenshin_text.g:2109:3: ( 'EJavaClass' )
+                    // InternalHenshin_text.g:2157:2: ( ( 'EJavaClass' ) )
+                    // InternalHenshin_text.g:2158:3: ( 'EJavaClass' )
                     {
                      before(grammarAccess.getTypeAccess().getEJavaClassEnumLiteralDeclaration_23()); 
-                    // InternalHenshin_text.g:2110:3: ( 'EJavaClass' )
-                    // InternalHenshin_text.g:2110:4: 'EJavaClass'
+                    // InternalHenshin_text.g:2159:3: ( 'EJavaClass' )
+                    // InternalHenshin_text.g:2159:4: 'EJavaClass'
                     {
-                    match(input,53,FOLLOW_2); 
+                    match(input,57,FOLLOW_2); 
 
                     }
 
@@ -7219,16 +7409,16 @@
                     }
                     break;
                 case 25 :
-                    // InternalHenshin_text.g:2114:2: ( ( 'EJavaObject' ) )
+                    // InternalHenshin_text.g:2163:2: ( ( 'EJavaObject' ) )
                     {
-                    // InternalHenshin_text.g:2114:2: ( ( 'EJavaObject' ) )
-                    // InternalHenshin_text.g:2115:3: ( 'EJavaObject' )
+                    // InternalHenshin_text.g:2163:2: ( ( 'EJavaObject' ) )
+                    // InternalHenshin_text.g:2164:3: ( 'EJavaObject' )
                     {
                      before(grammarAccess.getTypeAccess().getEJavaObjectEnumLiteralDeclaration_24()); 
-                    // InternalHenshin_text.g:2116:3: ( 'EJavaObject' )
-                    // InternalHenshin_text.g:2116:4: 'EJavaObject'
+                    // InternalHenshin_text.g:2165:3: ( 'EJavaObject' )
+                    // InternalHenshin_text.g:2165:4: 'EJavaObject'
                     {
-                    match(input,54,FOLLOW_2); 
+                    match(input,58,FOLLOW_2); 
 
                     }
 
@@ -7240,16 +7430,16 @@
                     }
                     break;
                 case 26 :
-                    // InternalHenshin_text.g:2120:2: ( ( 'ELong' ) )
+                    // InternalHenshin_text.g:2169:2: ( ( 'ELong' ) )
                     {
-                    // InternalHenshin_text.g:2120:2: ( ( 'ELong' ) )
-                    // InternalHenshin_text.g:2121:3: ( 'ELong' )
+                    // InternalHenshin_text.g:2169:2: ( ( 'ELong' ) )
+                    // InternalHenshin_text.g:2170:3: ( 'ELong' )
                     {
                      before(grammarAccess.getTypeAccess().getELongEnumLiteralDeclaration_25()); 
-                    // InternalHenshin_text.g:2122:3: ( 'ELong' )
-                    // InternalHenshin_text.g:2122:4: 'ELong'
+                    // InternalHenshin_text.g:2171:3: ( 'ELong' )
+                    // InternalHenshin_text.g:2171:4: 'ELong'
                     {
-                    match(input,55,FOLLOW_2); 
+                    match(input,59,FOLLOW_2); 
 
                     }
 
@@ -7261,16 +7451,16 @@
                     }
                     break;
                 case 27 :
-                    // InternalHenshin_text.g:2126:2: ( ( 'ELongObject' ) )
+                    // InternalHenshin_text.g:2175:2: ( ( 'ELongObject' ) )
                     {
-                    // InternalHenshin_text.g:2126:2: ( ( 'ELongObject' ) )
-                    // InternalHenshin_text.g:2127:3: ( 'ELongObject' )
+                    // InternalHenshin_text.g:2175:2: ( ( 'ELongObject' ) )
+                    // InternalHenshin_text.g:2176:3: ( 'ELongObject' )
                     {
                      before(grammarAccess.getTypeAccess().getELongObjectEnumLiteralDeclaration_26()); 
-                    // InternalHenshin_text.g:2128:3: ( 'ELongObject' )
-                    // InternalHenshin_text.g:2128:4: 'ELongObject'
+                    // InternalHenshin_text.g:2177:3: ( 'ELongObject' )
+                    // InternalHenshin_text.g:2177:4: 'ELongObject'
                     {
-                    match(input,56,FOLLOW_2); 
+                    match(input,60,FOLLOW_2); 
 
                     }
 
@@ -7282,16 +7472,16 @@
                     }
                     break;
                 case 28 :
-                    // InternalHenshin_text.g:2132:2: ( ( 'EMap' ) )
+                    // InternalHenshin_text.g:2181:2: ( ( 'EMap' ) )
                     {
-                    // InternalHenshin_text.g:2132:2: ( ( 'EMap' ) )
-                    // InternalHenshin_text.g:2133:3: ( 'EMap' )
+                    // InternalHenshin_text.g:2181:2: ( ( 'EMap' ) )
+                    // InternalHenshin_text.g:2182:3: ( 'EMap' )
                     {
                      before(grammarAccess.getTypeAccess().getEMapEnumLiteralDeclaration_27()); 
-                    // InternalHenshin_text.g:2134:3: ( 'EMap' )
-                    // InternalHenshin_text.g:2134:4: 'EMap'
+                    // InternalHenshin_text.g:2183:3: ( 'EMap' )
+                    // InternalHenshin_text.g:2183:4: 'EMap'
                     {
-                    match(input,57,FOLLOW_2); 
+                    match(input,61,FOLLOW_2); 
 
                     }
 
@@ -7303,16 +7493,16 @@
                     }
                     break;
                 case 29 :
-                    // InternalHenshin_text.g:2138:2: ( ( 'EResource' ) )
+                    // InternalHenshin_text.g:2187:2: ( ( 'EResource' ) )
                     {
-                    // InternalHenshin_text.g:2138:2: ( ( 'EResource' ) )
-                    // InternalHenshin_text.g:2139:3: ( 'EResource' )
+                    // InternalHenshin_text.g:2187:2: ( ( 'EResource' ) )
+                    // InternalHenshin_text.g:2188:3: ( 'EResource' )
                     {
                      before(grammarAccess.getTypeAccess().getEResourceEnumLiteralDeclaration_28()); 
-                    // InternalHenshin_text.g:2140:3: ( 'EResource' )
-                    // InternalHenshin_text.g:2140:4: 'EResource'
+                    // InternalHenshin_text.g:2189:3: ( 'EResource' )
+                    // InternalHenshin_text.g:2189:4: 'EResource'
                     {
-                    match(input,58,FOLLOW_2); 
+                    match(input,62,FOLLOW_2); 
 
                     }
 
@@ -7324,16 +7514,16 @@
                     }
                     break;
                 case 30 :
-                    // InternalHenshin_text.g:2144:2: ( ( 'EResourceSet' ) )
+                    // InternalHenshin_text.g:2193:2: ( ( 'EResourceSet' ) )
                     {
-                    // InternalHenshin_text.g:2144:2: ( ( 'EResourceSet' ) )
-                    // InternalHenshin_text.g:2145:3: ( 'EResourceSet' )
+                    // InternalHenshin_text.g:2193:2: ( ( 'EResourceSet' ) )
+                    // InternalHenshin_text.g:2194:3: ( 'EResourceSet' )
                     {
                      before(grammarAccess.getTypeAccess().getEResourceSetEnumLiteralDeclaration_29()); 
-                    // InternalHenshin_text.g:2146:3: ( 'EResourceSet' )
-                    // InternalHenshin_text.g:2146:4: 'EResourceSet'
+                    // InternalHenshin_text.g:2195:3: ( 'EResourceSet' )
+                    // InternalHenshin_text.g:2195:4: 'EResourceSet'
                     {
-                    match(input,59,FOLLOW_2); 
+                    match(input,63,FOLLOW_2); 
 
                     }
 
@@ -7345,16 +7535,16 @@
                     }
                     break;
                 case 31 :
-                    // InternalHenshin_text.g:2150:2: ( ( 'EShort' ) )
+                    // InternalHenshin_text.g:2199:2: ( ( 'EShort' ) )
                     {
-                    // InternalHenshin_text.g:2150:2: ( ( 'EShort' ) )
-                    // InternalHenshin_text.g:2151:3: ( 'EShort' )
+                    // InternalHenshin_text.g:2199:2: ( ( 'EShort' ) )
+                    // InternalHenshin_text.g:2200:3: ( 'EShort' )
                     {
                      before(grammarAccess.getTypeAccess().getEShortEnumLiteralDeclaration_30()); 
-                    // InternalHenshin_text.g:2152:3: ( 'EShort' )
-                    // InternalHenshin_text.g:2152:4: 'EShort'
+                    // InternalHenshin_text.g:2201:3: ( 'EShort' )
+                    // InternalHenshin_text.g:2201:4: 'EShort'
                     {
-                    match(input,60,FOLLOW_2); 
+                    match(input,64,FOLLOW_2); 
 
                     }
 
@@ -7366,16 +7556,16 @@
                     }
                     break;
                 case 32 :
-                    // InternalHenshin_text.g:2156:2: ( ( 'EShortObject' ) )
+                    // InternalHenshin_text.g:2205:2: ( ( 'EShortObject' ) )
                     {
-                    // InternalHenshin_text.g:2156:2: ( ( 'EShortObject' ) )
-                    // InternalHenshin_text.g:2157:3: ( 'EShortObject' )
+                    // InternalHenshin_text.g:2205:2: ( ( 'EShortObject' ) )
+                    // InternalHenshin_text.g:2206:3: ( 'EShortObject' )
                     {
                      before(grammarAccess.getTypeAccess().getEShortObjectEnumLiteralDeclaration_31()); 
-                    // InternalHenshin_text.g:2158:3: ( 'EShortObject' )
-                    // InternalHenshin_text.g:2158:4: 'EShortObject'
+                    // InternalHenshin_text.g:2207:3: ( 'EShortObject' )
+                    // InternalHenshin_text.g:2207:4: 'EShortObject'
                     {
-                    match(input,61,FOLLOW_2); 
+                    match(input,65,FOLLOW_2); 
 
                     }
 
@@ -7387,16 +7577,16 @@
                     }
                     break;
                 case 33 :
-                    // InternalHenshin_text.g:2162:2: ( ( 'EString' ) )
+                    // InternalHenshin_text.g:2211:2: ( ( 'EString' ) )
                     {
-                    // InternalHenshin_text.g:2162:2: ( ( 'EString' ) )
-                    // InternalHenshin_text.g:2163:3: ( 'EString' )
+                    // InternalHenshin_text.g:2211:2: ( ( 'EString' ) )
+                    // InternalHenshin_text.g:2212:3: ( 'EString' )
                     {
                      before(grammarAccess.getTypeAccess().getEStringEnumLiteralDeclaration_32()); 
-                    // InternalHenshin_text.g:2164:3: ( 'EString' )
-                    // InternalHenshin_text.g:2164:4: 'EString'
+                    // InternalHenshin_text.g:2213:3: ( 'EString' )
+                    // InternalHenshin_text.g:2213:4: 'EString'
                     {
-                    match(input,62,FOLLOW_2); 
+                    match(input,66,FOLLOW_2); 
 
                     }
 
@@ -7425,14 +7615,14 @@
 
 
     // $ANTLR start "rule__Model__Group__0"
-    // InternalHenshin_text.g:2172:1: rule__Model__Group__0 : rule__Model__Group__0__Impl rule__Model__Group__1 ;
+    // InternalHenshin_text.g:2221:1: rule__Model__Group__0 : rule__Model__Group__0__Impl rule__Model__Group__1 ;
     public final void rule__Model__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2176:1: ( rule__Model__Group__0__Impl rule__Model__Group__1 )
-            // InternalHenshin_text.g:2177:2: rule__Model__Group__0__Impl rule__Model__Group__1
+            // InternalHenshin_text.g:2225:1: ( rule__Model__Group__0__Impl rule__Model__Group__1 )
+            // InternalHenshin_text.g:2226:2: rule__Model__Group__0__Impl rule__Model__Group__1
             {
             pushFollow(FOLLOW_4);
             rule__Model__Group__0__Impl();
@@ -7463,24 +7653,24 @@
 
 
     // $ANTLR start "rule__Model__Group__0__Impl"
-    // InternalHenshin_text.g:2184:1: rule__Model__Group__0__Impl : ( ( ( rule__Model__EPackageimportsAssignment_0 ) ) ( ( rule__Model__EPackageimportsAssignment_0 )* ) ) ;
+    // InternalHenshin_text.g:2233:1: rule__Model__Group__0__Impl : ( ( ( rule__Model__EPackageimportsAssignment_0 ) ) ( ( rule__Model__EPackageimportsAssignment_0 )* ) ) ;
     public final void rule__Model__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2188:1: ( ( ( ( rule__Model__EPackageimportsAssignment_0 ) ) ( ( rule__Model__EPackageimportsAssignment_0 )* ) ) )
-            // InternalHenshin_text.g:2189:1: ( ( ( rule__Model__EPackageimportsAssignment_0 ) ) ( ( rule__Model__EPackageimportsAssignment_0 )* ) )
+            // InternalHenshin_text.g:2237:1: ( ( ( ( rule__Model__EPackageimportsAssignment_0 ) ) ( ( rule__Model__EPackageimportsAssignment_0 )* ) ) )
+            // InternalHenshin_text.g:2238:1: ( ( ( rule__Model__EPackageimportsAssignment_0 ) ) ( ( rule__Model__EPackageimportsAssignment_0 )* ) )
             {
-            // InternalHenshin_text.g:2189:1: ( ( ( rule__Model__EPackageimportsAssignment_0 ) ) ( ( rule__Model__EPackageimportsAssignment_0 )* ) )
-            // InternalHenshin_text.g:2190:2: ( ( rule__Model__EPackageimportsAssignment_0 ) ) ( ( rule__Model__EPackageimportsAssignment_0 )* )
+            // InternalHenshin_text.g:2238:1: ( ( ( rule__Model__EPackageimportsAssignment_0 ) ) ( ( rule__Model__EPackageimportsAssignment_0 )* ) )
+            // InternalHenshin_text.g:2239:2: ( ( rule__Model__EPackageimportsAssignment_0 ) ) ( ( rule__Model__EPackageimportsAssignment_0 )* )
             {
-            // InternalHenshin_text.g:2190:2: ( ( rule__Model__EPackageimportsAssignment_0 ) )
-            // InternalHenshin_text.g:2191:3: ( rule__Model__EPackageimportsAssignment_0 )
+            // InternalHenshin_text.g:2239:2: ( ( rule__Model__EPackageimportsAssignment_0 ) )
+            // InternalHenshin_text.g:2240:3: ( rule__Model__EPackageimportsAssignment_0 )
             {
              before(grammarAccess.getModelAccess().getEPackageimportsAssignment_0()); 
-            // InternalHenshin_text.g:2192:3: ( rule__Model__EPackageimportsAssignment_0 )
-            // InternalHenshin_text.g:2192:4: rule__Model__EPackageimportsAssignment_0
+            // InternalHenshin_text.g:2241:3: ( rule__Model__EPackageimportsAssignment_0 )
+            // InternalHenshin_text.g:2241:4: rule__Model__EPackageimportsAssignment_0
             {
             pushFollow(FOLLOW_5);
             rule__Model__EPackageimportsAssignment_0();
@@ -7494,24 +7684,24 @@
 
             }
 
-            // InternalHenshin_text.g:2195:2: ( ( rule__Model__EPackageimportsAssignment_0 )* )
-            // InternalHenshin_text.g:2196:3: ( rule__Model__EPackageimportsAssignment_0 )*
+            // InternalHenshin_text.g:2244:2: ( ( rule__Model__EPackageimportsAssignment_0 )* )
+            // InternalHenshin_text.g:2245:3: ( rule__Model__EPackageimportsAssignment_0 )*
             {
              before(grammarAccess.getModelAccess().getEPackageimportsAssignment_0()); 
-            // InternalHenshin_text.g:2197:3: ( rule__Model__EPackageimportsAssignment_0 )*
-            loop21:
+            // InternalHenshin_text.g:2246:3: ( rule__Model__EPackageimportsAssignment_0 )*
+            loop22:
             do {
-                int alt21=2;
-                int LA21_0 = input.LA(1);
+                int alt22=2;
+                int LA22_0 = input.LA(1);
 
-                if ( (LA21_0==63) ) {
-                    alt21=1;
+                if ( (LA22_0==67) ) {
+                    alt22=1;
                 }
 
 
-                switch (alt21) {
+                switch (alt22) {
             	case 1 :
-            	    // InternalHenshin_text.g:2197:4: rule__Model__EPackageimportsAssignment_0
+            	    // InternalHenshin_text.g:2246:4: rule__Model__EPackageimportsAssignment_0
             	    {
             	    pushFollow(FOLLOW_5);
             	    rule__Model__EPackageimportsAssignment_0();
@@ -7523,7 +7713,7 @@
             	    break;
 
             	default :
-            	    break loop21;
+            	    break loop22;
                 }
             } while (true);
 
@@ -7553,14 +7743,14 @@
 
 
     // $ANTLR start "rule__Model__Group__1"
-    // InternalHenshin_text.g:2206:1: rule__Model__Group__1 : rule__Model__Group__1__Impl ;
+    // InternalHenshin_text.g:2255:1: rule__Model__Group__1 : rule__Model__Group__1__Impl ;
     public final void rule__Model__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2210:1: ( rule__Model__Group__1__Impl )
-            // InternalHenshin_text.g:2211:2: rule__Model__Group__1__Impl
+            // InternalHenshin_text.g:2259:1: ( rule__Model__Group__1__Impl )
+            // InternalHenshin_text.g:2260:2: rule__Model__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Model__Group__1__Impl();
@@ -7586,33 +7776,33 @@
 
 
     // $ANTLR start "rule__Model__Group__1__Impl"
-    // InternalHenshin_text.g:2217:1: rule__Model__Group__1__Impl : ( ( rule__Model__TransformationsystemAssignment_1 )* ) ;
+    // InternalHenshin_text.g:2266:1: rule__Model__Group__1__Impl : ( ( rule__Model__TransformationsystemAssignment_1 )* ) ;
     public final void rule__Model__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2221:1: ( ( ( rule__Model__TransformationsystemAssignment_1 )* ) )
-            // InternalHenshin_text.g:2222:1: ( ( rule__Model__TransformationsystemAssignment_1 )* )
+            // InternalHenshin_text.g:2270:1: ( ( ( rule__Model__TransformationsystemAssignment_1 )* ) )
+            // InternalHenshin_text.g:2271:1: ( ( rule__Model__TransformationsystemAssignment_1 )* )
             {
-            // InternalHenshin_text.g:2222:1: ( ( rule__Model__TransformationsystemAssignment_1 )* )
-            // InternalHenshin_text.g:2223:2: ( rule__Model__TransformationsystemAssignment_1 )*
+            // InternalHenshin_text.g:2271:1: ( ( rule__Model__TransformationsystemAssignment_1 )* )
+            // InternalHenshin_text.g:2272:2: ( rule__Model__TransformationsystemAssignment_1 )*
             {
              before(grammarAccess.getModelAccess().getTransformationsystemAssignment_1()); 
-            // InternalHenshin_text.g:2224:2: ( rule__Model__TransformationsystemAssignment_1 )*
-            loop22:
+            // InternalHenshin_text.g:2273:2: ( rule__Model__TransformationsystemAssignment_1 )*
+            loop23:
             do {
-                int alt22=2;
-                int LA22_0 = input.LA(1);
+                int alt23=2;
+                int LA23_0 = input.LA(1);
 
-                if ( (LA22_0==65||LA22_0==71) ) {
-                    alt22=1;
+                if ( (LA23_0==69||LA23_0==75) ) {
+                    alt23=1;
                 }
 
 
-                switch (alt22) {
+                switch (alt23) {
             	case 1 :
-            	    // InternalHenshin_text.g:2224:3: rule__Model__TransformationsystemAssignment_1
+            	    // InternalHenshin_text.g:2273:3: rule__Model__TransformationsystemAssignment_1
             	    {
             	    pushFollow(FOLLOW_6);
             	    rule__Model__TransformationsystemAssignment_1();
@@ -7624,7 +7814,7 @@
             	    break;
 
             	default :
-            	    break loop22;
+            	    break loop23;
                 }
             } while (true);
 
@@ -7651,14 +7841,14 @@
 
 
     // $ANTLR start "rule__EPackageImport__Group__0"
-    // InternalHenshin_text.g:2233:1: rule__EPackageImport__Group__0 : rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1 ;
+    // InternalHenshin_text.g:2282:1: rule__EPackageImport__Group__0 : rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1 ;
     public final void rule__EPackageImport__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2237:1: ( rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1 )
-            // InternalHenshin_text.g:2238:2: rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1
+            // InternalHenshin_text.g:2286:1: ( rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1 )
+            // InternalHenshin_text.g:2287:2: rule__EPackageImport__Group__0__Impl rule__EPackageImport__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__EPackageImport__Group__0__Impl();
@@ -7689,20 +7879,20 @@
 
 
     // $ANTLR start "rule__EPackageImport__Group__0__Impl"
-    // InternalHenshin_text.g:2245:1: rule__EPackageImport__Group__0__Impl : ( 'ePackageImport' ) ;
+    // InternalHenshin_text.g:2294:1: rule__EPackageImport__Group__0__Impl : ( 'ePackageImport' ) ;
     public final void rule__EPackageImport__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2249:1: ( ( 'ePackageImport' ) )
-            // InternalHenshin_text.g:2250:1: ( 'ePackageImport' )
+            // InternalHenshin_text.g:2298:1: ( ( 'ePackageImport' ) )
+            // InternalHenshin_text.g:2299:1: ( 'ePackageImport' )
             {
-            // InternalHenshin_text.g:2250:1: ( 'ePackageImport' )
-            // InternalHenshin_text.g:2251:2: 'ePackageImport'
+            // InternalHenshin_text.g:2299:1: ( 'ePackageImport' )
+            // InternalHenshin_text.g:2300:2: 'ePackageImport'
             {
              before(grammarAccess.getEPackageImportAccess().getEPackageImportKeyword_0()); 
-            match(input,63,FOLLOW_2); 
+            match(input,67,FOLLOW_2); 
              after(grammarAccess.getEPackageImportAccess().getEPackageImportKeyword_0()); 
 
             }
@@ -7726,14 +7916,14 @@
 
 
     // $ANTLR start "rule__EPackageImport__Group__1"
-    // InternalHenshin_text.g:2260:1: rule__EPackageImport__Group__1 : rule__EPackageImport__Group__1__Impl ;
+    // InternalHenshin_text.g:2309:1: rule__EPackageImport__Group__1 : rule__EPackageImport__Group__1__Impl ;
     public final void rule__EPackageImport__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2264:1: ( rule__EPackageImport__Group__1__Impl )
-            // InternalHenshin_text.g:2265:2: rule__EPackageImport__Group__1__Impl
+            // InternalHenshin_text.g:2313:1: ( rule__EPackageImport__Group__1__Impl )
+            // InternalHenshin_text.g:2314:2: rule__EPackageImport__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EPackageImport__Group__1__Impl();
@@ -7759,21 +7949,21 @@
 
 
     // $ANTLR start "rule__EPackageImport__Group__1__Impl"
-    // InternalHenshin_text.g:2271:1: rule__EPackageImport__Group__1__Impl : ( ( rule__EPackageImport__RefAssignment_1 ) ) ;
+    // InternalHenshin_text.g:2320:1: rule__EPackageImport__Group__1__Impl : ( ( rule__EPackageImport__RefAssignment_1 ) ) ;
     public final void rule__EPackageImport__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2275:1: ( ( ( rule__EPackageImport__RefAssignment_1 ) ) )
-            // InternalHenshin_text.g:2276:1: ( ( rule__EPackageImport__RefAssignment_1 ) )
+            // InternalHenshin_text.g:2324:1: ( ( ( rule__EPackageImport__RefAssignment_1 ) ) )
+            // InternalHenshin_text.g:2325:1: ( ( rule__EPackageImport__RefAssignment_1 ) )
             {
-            // InternalHenshin_text.g:2276:1: ( ( rule__EPackageImport__RefAssignment_1 ) )
-            // InternalHenshin_text.g:2277:2: ( rule__EPackageImport__RefAssignment_1 )
+            // InternalHenshin_text.g:2325:1: ( ( rule__EPackageImport__RefAssignment_1 ) )
+            // InternalHenshin_text.g:2326:2: ( rule__EPackageImport__RefAssignment_1 )
             {
              before(grammarAccess.getEPackageImportAccess().getRefAssignment_1()); 
-            // InternalHenshin_text.g:2278:2: ( rule__EPackageImport__RefAssignment_1 )
-            // InternalHenshin_text.g:2278:3: rule__EPackageImport__RefAssignment_1
+            // InternalHenshin_text.g:2327:2: ( rule__EPackageImport__RefAssignment_1 )
+            // InternalHenshin_text.g:2327:3: rule__EPackageImport__RefAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__EPackageImport__RefAssignment_1();
@@ -7806,14 +7996,14 @@
 
 
     // $ANTLR start "rule__EString__Group__0"
-    // InternalHenshin_text.g:2287:1: rule__EString__Group__0 : rule__EString__Group__0__Impl rule__EString__Group__1 ;
+    // InternalHenshin_text.g:2336:1: rule__EString__Group__0 : rule__EString__Group__0__Impl rule__EString__Group__1 ;
     public final void rule__EString__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2291:1: ( rule__EString__Group__0__Impl rule__EString__Group__1 )
-            // InternalHenshin_text.g:2292:2: rule__EString__Group__0__Impl rule__EString__Group__1
+            // InternalHenshin_text.g:2340:1: ( rule__EString__Group__0__Impl rule__EString__Group__1 )
+            // InternalHenshin_text.g:2341:2: rule__EString__Group__0__Impl rule__EString__Group__1
             {
             pushFollow(FOLLOW_8);
             rule__EString__Group__0__Impl();
@@ -7844,17 +8034,17 @@
 
 
     // $ANTLR start "rule__EString__Group__0__Impl"
-    // InternalHenshin_text.g:2299:1: rule__EString__Group__0__Impl : ( RULE_ID ) ;
+    // InternalHenshin_text.g:2348:1: rule__EString__Group__0__Impl : ( RULE_ID ) ;
     public final void rule__EString__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2303:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:2304:1: ( RULE_ID )
+            // InternalHenshin_text.g:2352:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:2353:1: ( RULE_ID )
             {
-            // InternalHenshin_text.g:2304:1: ( RULE_ID )
-            // InternalHenshin_text.g:2305:2: RULE_ID
+            // InternalHenshin_text.g:2353:1: ( RULE_ID )
+            // InternalHenshin_text.g:2354:2: RULE_ID
             {
              before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -7881,14 +8071,14 @@
 
 
     // $ANTLR start "rule__EString__Group__1"
-    // InternalHenshin_text.g:2314:1: rule__EString__Group__1 : rule__EString__Group__1__Impl ;
+    // InternalHenshin_text.g:2363:1: rule__EString__Group__1 : rule__EString__Group__1__Impl ;
     public final void rule__EString__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2318:1: ( rule__EString__Group__1__Impl )
-            // InternalHenshin_text.g:2319:2: rule__EString__Group__1__Impl
+            // InternalHenshin_text.g:2367:1: ( rule__EString__Group__1__Impl )
+            // InternalHenshin_text.g:2368:2: rule__EString__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EString__Group__1__Impl();
@@ -7914,33 +8104,33 @@
 
 
     // $ANTLR start "rule__EString__Group__1__Impl"
-    // InternalHenshin_text.g:2325:1: rule__EString__Group__1__Impl : ( ( rule__EString__Group_1__0 )* ) ;
+    // InternalHenshin_text.g:2374:1: rule__EString__Group__1__Impl : ( ( rule__EString__Group_1__0 )* ) ;
     public final void rule__EString__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2329:1: ( ( ( rule__EString__Group_1__0 )* ) )
-            // InternalHenshin_text.g:2330:1: ( ( rule__EString__Group_1__0 )* )
+            // InternalHenshin_text.g:2378:1: ( ( ( rule__EString__Group_1__0 )* ) )
+            // InternalHenshin_text.g:2379:1: ( ( rule__EString__Group_1__0 )* )
             {
-            // InternalHenshin_text.g:2330:1: ( ( rule__EString__Group_1__0 )* )
-            // InternalHenshin_text.g:2331:2: ( rule__EString__Group_1__0 )*
+            // InternalHenshin_text.g:2379:1: ( ( rule__EString__Group_1__0 )* )
+            // InternalHenshin_text.g:2380:2: ( rule__EString__Group_1__0 )*
             {
              before(grammarAccess.getEStringAccess().getGroup_1()); 
-            // InternalHenshin_text.g:2332:2: ( rule__EString__Group_1__0 )*
-            loop23:
+            // InternalHenshin_text.g:2381:2: ( rule__EString__Group_1__0 )*
+            loop24:
             do {
-                int alt23=2;
-                int LA23_0 = input.LA(1);
+                int alt24=2;
+                int LA24_0 = input.LA(1);
 
-                if ( (LA23_0==64) ) {
-                    alt23=1;
+                if ( (LA24_0==68) ) {
+                    alt24=1;
                 }
 
 
-                switch (alt23) {
+                switch (alt24) {
             	case 1 :
-            	    // InternalHenshin_text.g:2332:3: rule__EString__Group_1__0
+            	    // InternalHenshin_text.g:2381:3: rule__EString__Group_1__0
             	    {
             	    pushFollow(FOLLOW_9);
             	    rule__EString__Group_1__0();
@@ -7952,7 +8142,7 @@
             	    break;
 
             	default :
-            	    break loop23;
+            	    break loop24;
                 }
             } while (true);
 
@@ -7979,14 +8169,14 @@
 
 
     // $ANTLR start "rule__EString__Group_1__0"
-    // InternalHenshin_text.g:2341:1: rule__EString__Group_1__0 : rule__EString__Group_1__0__Impl rule__EString__Group_1__1 ;
+    // InternalHenshin_text.g:2390:1: rule__EString__Group_1__0 : rule__EString__Group_1__0__Impl rule__EString__Group_1__1 ;
     public final void rule__EString__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2345:1: ( rule__EString__Group_1__0__Impl rule__EString__Group_1__1 )
-            // InternalHenshin_text.g:2346:2: rule__EString__Group_1__0__Impl rule__EString__Group_1__1
+            // InternalHenshin_text.g:2394:1: ( rule__EString__Group_1__0__Impl rule__EString__Group_1__1 )
+            // InternalHenshin_text.g:2395:2: rule__EString__Group_1__0__Impl rule__EString__Group_1__1
             {
             pushFollow(FOLLOW_7);
             rule__EString__Group_1__0__Impl();
@@ -8017,20 +8207,20 @@
 
 
     // $ANTLR start "rule__EString__Group_1__0__Impl"
-    // InternalHenshin_text.g:2353:1: rule__EString__Group_1__0__Impl : ( '.' ) ;
+    // InternalHenshin_text.g:2402:1: rule__EString__Group_1__0__Impl : ( '.' ) ;
     public final void rule__EString__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2357:1: ( ( '.' ) )
-            // InternalHenshin_text.g:2358:1: ( '.' )
+            // InternalHenshin_text.g:2406:1: ( ( '.' ) )
+            // InternalHenshin_text.g:2407:1: ( '.' )
             {
-            // InternalHenshin_text.g:2358:1: ( '.' )
-            // InternalHenshin_text.g:2359:2: '.'
+            // InternalHenshin_text.g:2407:1: ( '.' )
+            // InternalHenshin_text.g:2408:2: '.'
             {
              before(grammarAccess.getEStringAccess().getFullStopKeyword_1_0()); 
-            match(input,64,FOLLOW_2); 
+            match(input,68,FOLLOW_2); 
              after(grammarAccess.getEStringAccess().getFullStopKeyword_1_0()); 
 
             }
@@ -8054,14 +8244,14 @@
 
 
     // $ANTLR start "rule__EString__Group_1__1"
-    // InternalHenshin_text.g:2368:1: rule__EString__Group_1__1 : rule__EString__Group_1__1__Impl ;
+    // InternalHenshin_text.g:2417:1: rule__EString__Group_1__1 : rule__EString__Group_1__1__Impl ;
     public final void rule__EString__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2372:1: ( rule__EString__Group_1__1__Impl )
-            // InternalHenshin_text.g:2373:2: rule__EString__Group_1__1__Impl
+            // InternalHenshin_text.g:2421:1: ( rule__EString__Group_1__1__Impl )
+            // InternalHenshin_text.g:2422:2: rule__EString__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EString__Group_1__1__Impl();
@@ -8087,17 +8277,17 @@
 
 
     // $ANTLR start "rule__EString__Group_1__1__Impl"
-    // InternalHenshin_text.g:2379:1: rule__EString__Group_1__1__Impl : ( RULE_ID ) ;
+    // InternalHenshin_text.g:2428:1: rule__EString__Group_1__1__Impl : ( RULE_ID ) ;
     public final void rule__EString__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2383:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:2384:1: ( RULE_ID )
+            // InternalHenshin_text.g:2432:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:2433:1: ( RULE_ID )
             {
-            // InternalHenshin_text.g:2384:1: ( RULE_ID )
-            // InternalHenshin_text.g:2385:2: RULE_ID
+            // InternalHenshin_text.g:2433:1: ( RULE_ID )
+            // InternalHenshin_text.g:2434:2: RULE_ID
             {
              before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -8124,14 +8314,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__0"
-    // InternalHenshin_text.g:2395:1: rule__ModelElement__Group_0__0 : rule__ModelElement__Group_0__0__Impl rule__ModelElement__Group_0__1 ;
+    // InternalHenshin_text.g:2444:1: rule__ModelElement__Group_0__0 : rule__ModelElement__Group_0__0__Impl rule__ModelElement__Group_0__1 ;
     public final void rule__ModelElement__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2399:1: ( rule__ModelElement__Group_0__0__Impl rule__ModelElement__Group_0__1 )
-            // InternalHenshin_text.g:2400:2: rule__ModelElement__Group_0__0__Impl rule__ModelElement__Group_0__1
+            // InternalHenshin_text.g:2448:1: ( rule__ModelElement__Group_0__0__Impl rule__ModelElement__Group_0__1 )
+            // InternalHenshin_text.g:2449:2: rule__ModelElement__Group_0__0__Impl rule__ModelElement__Group_0__1
             {
             pushFollow(FOLLOW_7);
             rule__ModelElement__Group_0__0__Impl();
@@ -8162,20 +8352,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__0__Impl"
-    // InternalHenshin_text.g:2407:1: rule__ModelElement__Group_0__0__Impl : ( 'rule' ) ;
+    // InternalHenshin_text.g:2456:1: rule__ModelElement__Group_0__0__Impl : ( 'rule' ) ;
     public final void rule__ModelElement__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2411:1: ( ( 'rule' ) )
-            // InternalHenshin_text.g:2412:1: ( 'rule' )
+            // InternalHenshin_text.g:2460:1: ( ( 'rule' ) )
+            // InternalHenshin_text.g:2461:1: ( 'rule' )
             {
-            // InternalHenshin_text.g:2412:1: ( 'rule' )
-            // InternalHenshin_text.g:2413:2: 'rule'
+            // InternalHenshin_text.g:2461:1: ( 'rule' )
+            // InternalHenshin_text.g:2462:2: 'rule'
             {
              before(grammarAccess.getModelElementAccess().getRuleKeyword_0_0()); 
-            match(input,65,FOLLOW_2); 
+            match(input,69,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getRuleKeyword_0_0()); 
 
             }
@@ -8199,14 +8389,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__1"
-    // InternalHenshin_text.g:2422:1: rule__ModelElement__Group_0__1 : rule__ModelElement__Group_0__1__Impl rule__ModelElement__Group_0__2 ;
+    // InternalHenshin_text.g:2471:1: rule__ModelElement__Group_0__1 : rule__ModelElement__Group_0__1__Impl rule__ModelElement__Group_0__2 ;
     public final void rule__ModelElement__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2426:1: ( rule__ModelElement__Group_0__1__Impl rule__ModelElement__Group_0__2 )
-            // InternalHenshin_text.g:2427:2: rule__ModelElement__Group_0__1__Impl rule__ModelElement__Group_0__2
+            // InternalHenshin_text.g:2475:1: ( rule__ModelElement__Group_0__1__Impl rule__ModelElement__Group_0__2 )
+            // InternalHenshin_text.g:2476:2: rule__ModelElement__Group_0__1__Impl rule__ModelElement__Group_0__2
             {
             pushFollow(FOLLOW_7);
             rule__ModelElement__Group_0__1__Impl();
@@ -8237,21 +8427,21 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__1__Impl"
-    // InternalHenshin_text.g:2434:1: rule__ModelElement__Group_0__1__Impl : ( () ) ;
+    // InternalHenshin_text.g:2483:1: rule__ModelElement__Group_0__1__Impl : ( () ) ;
     public final void rule__ModelElement__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2438:1: ( ( () ) )
-            // InternalHenshin_text.g:2439:1: ( () )
+            // InternalHenshin_text.g:2487:1: ( ( () ) )
+            // InternalHenshin_text.g:2488:1: ( () )
             {
-            // InternalHenshin_text.g:2439:1: ( () )
-            // InternalHenshin_text.g:2440:2: ()
+            // InternalHenshin_text.g:2488:1: ( () )
+            // InternalHenshin_text.g:2489:2: ()
             {
              before(grammarAccess.getModelElementAccess().getRuleAction_0_1()); 
-            // InternalHenshin_text.g:2441:2: ()
-            // InternalHenshin_text.g:2441:3: 
+            // InternalHenshin_text.g:2490:2: ()
+            // InternalHenshin_text.g:2490:3: 
             {
             }
 
@@ -8274,14 +8464,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__2"
-    // InternalHenshin_text.g:2449:1: rule__ModelElement__Group_0__2 : rule__ModelElement__Group_0__2__Impl rule__ModelElement__Group_0__3 ;
+    // InternalHenshin_text.g:2498:1: rule__ModelElement__Group_0__2 : rule__ModelElement__Group_0__2__Impl rule__ModelElement__Group_0__3 ;
     public final void rule__ModelElement__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2453:1: ( rule__ModelElement__Group_0__2__Impl rule__ModelElement__Group_0__3 )
-            // InternalHenshin_text.g:2454:2: rule__ModelElement__Group_0__2__Impl rule__ModelElement__Group_0__3
+            // InternalHenshin_text.g:2502:1: ( rule__ModelElement__Group_0__2__Impl rule__ModelElement__Group_0__3 )
+            // InternalHenshin_text.g:2503:2: rule__ModelElement__Group_0__2__Impl rule__ModelElement__Group_0__3
             {
             pushFollow(FOLLOW_10);
             rule__ModelElement__Group_0__2__Impl();
@@ -8312,21 +8502,21 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__2__Impl"
-    // InternalHenshin_text.g:2461:1: rule__ModelElement__Group_0__2__Impl : ( ( rule__ModelElement__NameAssignment_0_2 ) ) ;
+    // InternalHenshin_text.g:2510:1: rule__ModelElement__Group_0__2__Impl : ( ( rule__ModelElement__NameAssignment_0_2 ) ) ;
     public final void rule__ModelElement__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2465:1: ( ( ( rule__ModelElement__NameAssignment_0_2 ) ) )
-            // InternalHenshin_text.g:2466:1: ( ( rule__ModelElement__NameAssignment_0_2 ) )
+            // InternalHenshin_text.g:2514:1: ( ( ( rule__ModelElement__NameAssignment_0_2 ) ) )
+            // InternalHenshin_text.g:2515:1: ( ( rule__ModelElement__NameAssignment_0_2 ) )
             {
-            // InternalHenshin_text.g:2466:1: ( ( rule__ModelElement__NameAssignment_0_2 ) )
-            // InternalHenshin_text.g:2467:2: ( rule__ModelElement__NameAssignment_0_2 )
+            // InternalHenshin_text.g:2515:1: ( ( rule__ModelElement__NameAssignment_0_2 ) )
+            // InternalHenshin_text.g:2516:2: ( rule__ModelElement__NameAssignment_0_2 )
             {
              before(grammarAccess.getModelElementAccess().getNameAssignment_0_2()); 
-            // InternalHenshin_text.g:2468:2: ( rule__ModelElement__NameAssignment_0_2 )
-            // InternalHenshin_text.g:2468:3: rule__ModelElement__NameAssignment_0_2
+            // InternalHenshin_text.g:2517:2: ( rule__ModelElement__NameAssignment_0_2 )
+            // InternalHenshin_text.g:2517:3: rule__ModelElement__NameAssignment_0_2
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__NameAssignment_0_2();
@@ -8359,14 +8549,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__3"
-    // InternalHenshin_text.g:2476:1: rule__ModelElement__Group_0__3 : rule__ModelElement__Group_0__3__Impl rule__ModelElement__Group_0__4 ;
+    // InternalHenshin_text.g:2525:1: rule__ModelElement__Group_0__3 : rule__ModelElement__Group_0__3__Impl rule__ModelElement__Group_0__4 ;
     public final void rule__ModelElement__Group_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2480:1: ( rule__ModelElement__Group_0__3__Impl rule__ModelElement__Group_0__4 )
-            // InternalHenshin_text.g:2481:2: rule__ModelElement__Group_0__3__Impl rule__ModelElement__Group_0__4
+            // InternalHenshin_text.g:2529:1: ( rule__ModelElement__Group_0__3__Impl rule__ModelElement__Group_0__4 )
+            // InternalHenshin_text.g:2530:2: rule__ModelElement__Group_0__3__Impl rule__ModelElement__Group_0__4
             {
             pushFollow(FOLLOW_11);
             rule__ModelElement__Group_0__3__Impl();
@@ -8397,20 +8587,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__3__Impl"
-    // InternalHenshin_text.g:2488:1: rule__ModelElement__Group_0__3__Impl : ( '(' ) ;
+    // InternalHenshin_text.g:2537:1: rule__ModelElement__Group_0__3__Impl : ( '(' ) ;
     public final void rule__ModelElement__Group_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2492:1: ( ( '(' ) )
-            // InternalHenshin_text.g:2493:1: ( '(' )
+            // InternalHenshin_text.g:2541:1: ( ( '(' ) )
+            // InternalHenshin_text.g:2542:1: ( '(' )
             {
-            // InternalHenshin_text.g:2493:1: ( '(' )
-            // InternalHenshin_text.g:2494:2: '('
+            // InternalHenshin_text.g:2542:1: ( '(' )
+            // InternalHenshin_text.g:2543:2: '('
             {
              before(grammarAccess.getModelElementAccess().getLeftParenthesisKeyword_0_3()); 
-            match(input,66,FOLLOW_2); 
+            match(input,70,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getLeftParenthesisKeyword_0_3()); 
 
             }
@@ -8434,14 +8624,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__4"
-    // InternalHenshin_text.g:2503:1: rule__ModelElement__Group_0__4 : rule__ModelElement__Group_0__4__Impl rule__ModelElement__Group_0__5 ;
+    // InternalHenshin_text.g:2552:1: rule__ModelElement__Group_0__4 : rule__ModelElement__Group_0__4__Impl rule__ModelElement__Group_0__5 ;
     public final void rule__ModelElement__Group_0__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2507:1: ( rule__ModelElement__Group_0__4__Impl rule__ModelElement__Group_0__5 )
-            // InternalHenshin_text.g:2508:2: rule__ModelElement__Group_0__4__Impl rule__ModelElement__Group_0__5
+            // InternalHenshin_text.g:2556:1: ( rule__ModelElement__Group_0__4__Impl rule__ModelElement__Group_0__5 )
+            // InternalHenshin_text.g:2557:2: rule__ModelElement__Group_0__4__Impl rule__ModelElement__Group_0__5
             {
             pushFollow(FOLLOW_11);
             rule__ModelElement__Group_0__4__Impl();
@@ -8472,29 +8662,29 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__4__Impl"
-    // InternalHenshin_text.g:2515:1: rule__ModelElement__Group_0__4__Impl : ( ( rule__ModelElement__Group_0_4__0 )? ) ;
+    // InternalHenshin_text.g:2564:1: rule__ModelElement__Group_0__4__Impl : ( ( rule__ModelElement__Group_0_4__0 )? ) ;
     public final void rule__ModelElement__Group_0__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2519:1: ( ( ( rule__ModelElement__Group_0_4__0 )? ) )
-            // InternalHenshin_text.g:2520:1: ( ( rule__ModelElement__Group_0_4__0 )? )
+            // InternalHenshin_text.g:2568:1: ( ( ( rule__ModelElement__Group_0_4__0 )? ) )
+            // InternalHenshin_text.g:2569:1: ( ( rule__ModelElement__Group_0_4__0 )? )
             {
-            // InternalHenshin_text.g:2520:1: ( ( rule__ModelElement__Group_0_4__0 )? )
-            // InternalHenshin_text.g:2521:2: ( rule__ModelElement__Group_0_4__0 )?
+            // InternalHenshin_text.g:2569:1: ( ( rule__ModelElement__Group_0_4__0 )? )
+            // InternalHenshin_text.g:2570:2: ( rule__ModelElement__Group_0_4__0 )?
             {
              before(grammarAccess.getModelElementAccess().getGroup_0_4()); 
-            // InternalHenshin_text.g:2522:2: ( rule__ModelElement__Group_0_4__0 )?
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            // InternalHenshin_text.g:2571:2: ( rule__ModelElement__Group_0_4__0 )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
 
-            if ( (LA24_0==RULE_ID) ) {
-                alt24=1;
+            if ( (LA25_0==RULE_ID||(LA25_0>=30 && LA25_0<=33)) ) {
+                alt25=1;
             }
-            switch (alt24) {
+            switch (alt25) {
                 case 1 :
-                    // InternalHenshin_text.g:2522:3: rule__ModelElement__Group_0_4__0
+                    // InternalHenshin_text.g:2571:3: rule__ModelElement__Group_0_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__ModelElement__Group_0_4__0();
@@ -8530,14 +8720,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__5"
-    // InternalHenshin_text.g:2530:1: rule__ModelElement__Group_0__5 : rule__ModelElement__Group_0__5__Impl rule__ModelElement__Group_0__6 ;
+    // InternalHenshin_text.g:2579:1: rule__ModelElement__Group_0__5 : rule__ModelElement__Group_0__5__Impl rule__ModelElement__Group_0__6 ;
     public final void rule__ModelElement__Group_0__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2534:1: ( rule__ModelElement__Group_0__5__Impl rule__ModelElement__Group_0__6 )
-            // InternalHenshin_text.g:2535:2: rule__ModelElement__Group_0__5__Impl rule__ModelElement__Group_0__6
+            // InternalHenshin_text.g:2583:1: ( rule__ModelElement__Group_0__5__Impl rule__ModelElement__Group_0__6 )
+            // InternalHenshin_text.g:2584:2: rule__ModelElement__Group_0__5__Impl rule__ModelElement__Group_0__6
             {
             pushFollow(FOLLOW_12);
             rule__ModelElement__Group_0__5__Impl();
@@ -8568,20 +8758,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__5__Impl"
-    // InternalHenshin_text.g:2542:1: rule__ModelElement__Group_0__5__Impl : ( ')' ) ;
+    // InternalHenshin_text.g:2591:1: rule__ModelElement__Group_0__5__Impl : ( ')' ) ;
     public final void rule__ModelElement__Group_0__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2546:1: ( ( ')' ) )
-            // InternalHenshin_text.g:2547:1: ( ')' )
+            // InternalHenshin_text.g:2595:1: ( ( ')' ) )
+            // InternalHenshin_text.g:2596:1: ( ')' )
             {
-            // InternalHenshin_text.g:2547:1: ( ')' )
-            // InternalHenshin_text.g:2548:2: ')'
+            // InternalHenshin_text.g:2596:1: ( ')' )
+            // InternalHenshin_text.g:2597:2: ')'
             {
              before(grammarAccess.getModelElementAccess().getRightParenthesisKeyword_0_5()); 
-            match(input,67,FOLLOW_2); 
+            match(input,71,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getRightParenthesisKeyword_0_5()); 
 
             }
@@ -8605,14 +8795,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__6"
-    // InternalHenshin_text.g:2557:1: rule__ModelElement__Group_0__6 : rule__ModelElement__Group_0__6__Impl rule__ModelElement__Group_0__7 ;
+    // InternalHenshin_text.g:2606:1: rule__ModelElement__Group_0__6 : rule__ModelElement__Group_0__6__Impl rule__ModelElement__Group_0__7 ;
     public final void rule__ModelElement__Group_0__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2561:1: ( rule__ModelElement__Group_0__6__Impl rule__ModelElement__Group_0__7 )
-            // InternalHenshin_text.g:2562:2: rule__ModelElement__Group_0__6__Impl rule__ModelElement__Group_0__7
+            // InternalHenshin_text.g:2610:1: ( rule__ModelElement__Group_0__6__Impl rule__ModelElement__Group_0__7 )
+            // InternalHenshin_text.g:2611:2: rule__ModelElement__Group_0__6__Impl rule__ModelElement__Group_0__7
             {
             pushFollow(FOLLOW_13);
             rule__ModelElement__Group_0__6__Impl();
@@ -8643,20 +8833,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__6__Impl"
-    // InternalHenshin_text.g:2569:1: rule__ModelElement__Group_0__6__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:2618:1: rule__ModelElement__Group_0__6__Impl : ( '{' ) ;
     public final void rule__ModelElement__Group_0__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2573:1: ( ( '{' ) )
-            // InternalHenshin_text.g:2574:1: ( '{' )
+            // InternalHenshin_text.g:2622:1: ( ( '{' ) )
+            // InternalHenshin_text.g:2623:1: ( '{' )
             {
-            // InternalHenshin_text.g:2574:1: ( '{' )
-            // InternalHenshin_text.g:2575:2: '{'
+            // InternalHenshin_text.g:2623:1: ( '{' )
+            // InternalHenshin_text.g:2624:2: '{'
             {
              before(grammarAccess.getModelElementAccess().getLeftCurlyBracketKeyword_0_6()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getLeftCurlyBracketKeyword_0_6()); 
 
             }
@@ -8680,14 +8870,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__7"
-    // InternalHenshin_text.g:2584:1: rule__ModelElement__Group_0__7 : rule__ModelElement__Group_0__7__Impl rule__ModelElement__Group_0__8 ;
+    // InternalHenshin_text.g:2633:1: rule__ModelElement__Group_0__7 : rule__ModelElement__Group_0__7__Impl rule__ModelElement__Group_0__8 ;
     public final void rule__ModelElement__Group_0__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2588:1: ( rule__ModelElement__Group_0__7__Impl rule__ModelElement__Group_0__8 )
-            // InternalHenshin_text.g:2589:2: rule__ModelElement__Group_0__7__Impl rule__ModelElement__Group_0__8
+            // InternalHenshin_text.g:2637:1: ( rule__ModelElement__Group_0__7__Impl rule__ModelElement__Group_0__8 )
+            // InternalHenshin_text.g:2638:2: rule__ModelElement__Group_0__7__Impl rule__ModelElement__Group_0__8
             {
             pushFollow(FOLLOW_14);
             rule__ModelElement__Group_0__7__Impl();
@@ -8718,24 +8908,24 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__7__Impl"
-    // InternalHenshin_text.g:2596:1: rule__ModelElement__Group_0__7__Impl : ( ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) ) ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* ) ) ;
+    // InternalHenshin_text.g:2645:1: rule__ModelElement__Group_0__7__Impl : ( ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) ) ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* ) ) ;
     public final void rule__ModelElement__Group_0__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2600:1: ( ( ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) ) ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* ) ) )
-            // InternalHenshin_text.g:2601:1: ( ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) ) ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* ) )
+            // InternalHenshin_text.g:2649:1: ( ( ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) ) ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* ) ) )
+            // InternalHenshin_text.g:2650:1: ( ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) ) ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* ) )
             {
-            // InternalHenshin_text.g:2601:1: ( ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) ) ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* ) )
-            // InternalHenshin_text.g:2602:2: ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) ) ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* )
+            // InternalHenshin_text.g:2650:1: ( ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) ) ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* ) )
+            // InternalHenshin_text.g:2651:2: ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) ) ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* )
             {
-            // InternalHenshin_text.g:2602:2: ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) )
-            // InternalHenshin_text.g:2603:3: ( rule__ModelElement__RuleElementsAssignment_0_7 )
+            // InternalHenshin_text.g:2651:2: ( ( rule__ModelElement__RuleElementsAssignment_0_7 ) )
+            // InternalHenshin_text.g:2652:3: ( rule__ModelElement__RuleElementsAssignment_0_7 )
             {
              before(grammarAccess.getModelElementAccess().getRuleElementsAssignment_0_7()); 
-            // InternalHenshin_text.g:2604:3: ( rule__ModelElement__RuleElementsAssignment_0_7 )
-            // InternalHenshin_text.g:2604:4: rule__ModelElement__RuleElementsAssignment_0_7
+            // InternalHenshin_text.g:2653:3: ( rule__ModelElement__RuleElementsAssignment_0_7 )
+            // InternalHenshin_text.g:2653:4: rule__ModelElement__RuleElementsAssignment_0_7
             {
             pushFollow(FOLLOW_15);
             rule__ModelElement__RuleElementsAssignment_0_7();
@@ -8749,24 +8939,24 @@
 
             }
 
-            // InternalHenshin_text.g:2607:2: ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* )
-            // InternalHenshin_text.g:2608:3: ( rule__ModelElement__RuleElementsAssignment_0_7 )*
+            // InternalHenshin_text.g:2656:2: ( ( rule__ModelElement__RuleElementsAssignment_0_7 )* )
+            // InternalHenshin_text.g:2657:3: ( rule__ModelElement__RuleElementsAssignment_0_7 )*
             {
              before(grammarAccess.getModelElementAccess().getRuleElementsAssignment_0_7()); 
-            // InternalHenshin_text.g:2609:3: ( rule__ModelElement__RuleElementsAssignment_0_7 )*
-            loop25:
+            // InternalHenshin_text.g:2658:3: ( rule__ModelElement__RuleElementsAssignment_0_7 )*
+            loop26:
             do {
-                int alt25=2;
-                int LA25_0 = input.LA(1);
+                int alt26=2;
+                int LA26_0 = input.LA(1);
 
-                if ( ((LA25_0>=72 && LA25_0<=75)||LA25_0==78) ) {
-                    alt25=1;
+                if ( ((LA26_0>=76 && LA26_0<=79)||LA26_0==82) ) {
+                    alt26=1;
                 }
 
 
-                switch (alt25) {
+                switch (alt26) {
             	case 1 :
-            	    // InternalHenshin_text.g:2609:4: rule__ModelElement__RuleElementsAssignment_0_7
+            	    // InternalHenshin_text.g:2658:4: rule__ModelElement__RuleElementsAssignment_0_7
             	    {
             	    pushFollow(FOLLOW_15);
             	    rule__ModelElement__RuleElementsAssignment_0_7();
@@ -8778,7 +8968,7 @@
             	    break;
 
             	default :
-            	    break loop25;
+            	    break loop26;
                 }
             } while (true);
 
@@ -8808,14 +8998,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__8"
-    // InternalHenshin_text.g:2618:1: rule__ModelElement__Group_0__8 : rule__ModelElement__Group_0__8__Impl ;
+    // InternalHenshin_text.g:2667:1: rule__ModelElement__Group_0__8 : rule__ModelElement__Group_0__8__Impl ;
     public final void rule__ModelElement__Group_0__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2622:1: ( rule__ModelElement__Group_0__8__Impl )
-            // InternalHenshin_text.g:2623:2: rule__ModelElement__Group_0__8__Impl
+            // InternalHenshin_text.g:2671:1: ( rule__ModelElement__Group_0__8__Impl )
+            // InternalHenshin_text.g:2672:2: rule__ModelElement__Group_0__8__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__Group_0__8__Impl();
@@ -8841,20 +9031,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0__8__Impl"
-    // InternalHenshin_text.g:2629:1: rule__ModelElement__Group_0__8__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:2678:1: rule__ModelElement__Group_0__8__Impl : ( '}' ) ;
     public final void rule__ModelElement__Group_0__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2633:1: ( ( '}' ) )
-            // InternalHenshin_text.g:2634:1: ( '}' )
+            // InternalHenshin_text.g:2682:1: ( ( '}' ) )
+            // InternalHenshin_text.g:2683:1: ( '}' )
             {
-            // InternalHenshin_text.g:2634:1: ( '}' )
-            // InternalHenshin_text.g:2635:2: '}'
+            // InternalHenshin_text.g:2683:1: ( '}' )
+            // InternalHenshin_text.g:2684:2: '}'
             {
              before(grammarAccess.getModelElementAccess().getRightCurlyBracketKeyword_0_8()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getRightCurlyBracketKeyword_0_8()); 
 
             }
@@ -8878,14 +9068,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0_4__0"
-    // InternalHenshin_text.g:2645:1: rule__ModelElement__Group_0_4__0 : rule__ModelElement__Group_0_4__0__Impl rule__ModelElement__Group_0_4__1 ;
+    // InternalHenshin_text.g:2694:1: rule__ModelElement__Group_0_4__0 : rule__ModelElement__Group_0_4__0__Impl rule__ModelElement__Group_0_4__1 ;
     public final void rule__ModelElement__Group_0_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2649:1: ( rule__ModelElement__Group_0_4__0__Impl rule__ModelElement__Group_0_4__1 )
-            // InternalHenshin_text.g:2650:2: rule__ModelElement__Group_0_4__0__Impl rule__ModelElement__Group_0_4__1
+            // InternalHenshin_text.g:2698:1: ( rule__ModelElement__Group_0_4__0__Impl rule__ModelElement__Group_0_4__1 )
+            // InternalHenshin_text.g:2699:2: rule__ModelElement__Group_0_4__0__Impl rule__ModelElement__Group_0_4__1
             {
             pushFollow(FOLLOW_16);
             rule__ModelElement__Group_0_4__0__Impl();
@@ -8916,21 +9106,21 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0_4__0__Impl"
-    // InternalHenshin_text.g:2657:1: rule__ModelElement__Group_0_4__0__Impl : ( ( rule__ModelElement__ParametersAssignment_0_4_0 ) ) ;
+    // InternalHenshin_text.g:2706:1: rule__ModelElement__Group_0_4__0__Impl : ( ( rule__ModelElement__ParametersAssignment_0_4_0 ) ) ;
     public final void rule__ModelElement__Group_0_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2661:1: ( ( ( rule__ModelElement__ParametersAssignment_0_4_0 ) ) )
-            // InternalHenshin_text.g:2662:1: ( ( rule__ModelElement__ParametersAssignment_0_4_0 ) )
+            // InternalHenshin_text.g:2710:1: ( ( ( rule__ModelElement__ParametersAssignment_0_4_0 ) ) )
+            // InternalHenshin_text.g:2711:1: ( ( rule__ModelElement__ParametersAssignment_0_4_0 ) )
             {
-            // InternalHenshin_text.g:2662:1: ( ( rule__ModelElement__ParametersAssignment_0_4_0 ) )
-            // InternalHenshin_text.g:2663:2: ( rule__ModelElement__ParametersAssignment_0_4_0 )
+            // InternalHenshin_text.g:2711:1: ( ( rule__ModelElement__ParametersAssignment_0_4_0 ) )
+            // InternalHenshin_text.g:2712:2: ( rule__ModelElement__ParametersAssignment_0_4_0 )
             {
              before(grammarAccess.getModelElementAccess().getParametersAssignment_0_4_0()); 
-            // InternalHenshin_text.g:2664:2: ( rule__ModelElement__ParametersAssignment_0_4_0 )
-            // InternalHenshin_text.g:2664:3: rule__ModelElement__ParametersAssignment_0_4_0
+            // InternalHenshin_text.g:2713:2: ( rule__ModelElement__ParametersAssignment_0_4_0 )
+            // InternalHenshin_text.g:2713:3: rule__ModelElement__ParametersAssignment_0_4_0
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__ParametersAssignment_0_4_0();
@@ -8963,14 +9153,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0_4__1"
-    // InternalHenshin_text.g:2672:1: rule__ModelElement__Group_0_4__1 : rule__ModelElement__Group_0_4__1__Impl ;
+    // InternalHenshin_text.g:2721:1: rule__ModelElement__Group_0_4__1 : rule__ModelElement__Group_0_4__1__Impl ;
     public final void rule__ModelElement__Group_0_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2676:1: ( rule__ModelElement__Group_0_4__1__Impl )
-            // InternalHenshin_text.g:2677:2: rule__ModelElement__Group_0_4__1__Impl
+            // InternalHenshin_text.g:2725:1: ( rule__ModelElement__Group_0_4__1__Impl )
+            // InternalHenshin_text.g:2726:2: rule__ModelElement__Group_0_4__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__Group_0_4__1__Impl();
@@ -8996,33 +9186,33 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0_4__1__Impl"
-    // InternalHenshin_text.g:2683:1: rule__ModelElement__Group_0_4__1__Impl : ( ( rule__ModelElement__Group_0_4_1__0 )* ) ;
+    // InternalHenshin_text.g:2732:1: rule__ModelElement__Group_0_4__1__Impl : ( ( rule__ModelElement__Group_0_4_1__0 )* ) ;
     public final void rule__ModelElement__Group_0_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2687:1: ( ( ( rule__ModelElement__Group_0_4_1__0 )* ) )
-            // InternalHenshin_text.g:2688:1: ( ( rule__ModelElement__Group_0_4_1__0 )* )
+            // InternalHenshin_text.g:2736:1: ( ( ( rule__ModelElement__Group_0_4_1__0 )* ) )
+            // InternalHenshin_text.g:2737:1: ( ( rule__ModelElement__Group_0_4_1__0 )* )
             {
-            // InternalHenshin_text.g:2688:1: ( ( rule__ModelElement__Group_0_4_1__0 )* )
-            // InternalHenshin_text.g:2689:2: ( rule__ModelElement__Group_0_4_1__0 )*
+            // InternalHenshin_text.g:2737:1: ( ( rule__ModelElement__Group_0_4_1__0 )* )
+            // InternalHenshin_text.g:2738:2: ( rule__ModelElement__Group_0_4_1__0 )*
             {
              before(grammarAccess.getModelElementAccess().getGroup_0_4_1()); 
-            // InternalHenshin_text.g:2690:2: ( rule__ModelElement__Group_0_4_1__0 )*
-            loop26:
+            // InternalHenshin_text.g:2739:2: ( rule__ModelElement__Group_0_4_1__0 )*
+            loop27:
             do {
-                int alt26=2;
-                int LA26_0 = input.LA(1);
+                int alt27=2;
+                int LA27_0 = input.LA(1);
 
-                if ( (LA26_0==70) ) {
-                    alt26=1;
+                if ( (LA27_0==74) ) {
+                    alt27=1;
                 }
 
 
-                switch (alt26) {
+                switch (alt27) {
             	case 1 :
-            	    // InternalHenshin_text.g:2690:3: rule__ModelElement__Group_0_4_1__0
+            	    // InternalHenshin_text.g:2739:3: rule__ModelElement__Group_0_4_1__0
             	    {
             	    pushFollow(FOLLOW_17);
             	    rule__ModelElement__Group_0_4_1__0();
@@ -9034,7 +9224,7 @@
             	    break;
 
             	default :
-            	    break loop26;
+            	    break loop27;
                 }
             } while (true);
 
@@ -9061,16 +9251,16 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0_4_1__0"
-    // InternalHenshin_text.g:2699:1: rule__ModelElement__Group_0_4_1__0 : rule__ModelElement__Group_0_4_1__0__Impl rule__ModelElement__Group_0_4_1__1 ;
+    // InternalHenshin_text.g:2748:1: rule__ModelElement__Group_0_4_1__0 : rule__ModelElement__Group_0_4_1__0__Impl rule__ModelElement__Group_0_4_1__1 ;
     public final void rule__ModelElement__Group_0_4_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2703:1: ( rule__ModelElement__Group_0_4_1__0__Impl rule__ModelElement__Group_0_4_1__1 )
-            // InternalHenshin_text.g:2704:2: rule__ModelElement__Group_0_4_1__0__Impl rule__ModelElement__Group_0_4_1__1
+            // InternalHenshin_text.g:2752:1: ( rule__ModelElement__Group_0_4_1__0__Impl rule__ModelElement__Group_0_4_1__1 )
+            // InternalHenshin_text.g:2753:2: rule__ModelElement__Group_0_4_1__0__Impl rule__ModelElement__Group_0_4_1__1
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_18);
             rule__ModelElement__Group_0_4_1__0__Impl();
 
             state._fsp--;
@@ -9099,20 +9289,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0_4_1__0__Impl"
-    // InternalHenshin_text.g:2711:1: rule__ModelElement__Group_0_4_1__0__Impl : ( ',' ) ;
+    // InternalHenshin_text.g:2760:1: rule__ModelElement__Group_0_4_1__0__Impl : ( ',' ) ;
     public final void rule__ModelElement__Group_0_4_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2715:1: ( ( ',' ) )
-            // InternalHenshin_text.g:2716:1: ( ',' )
+            // InternalHenshin_text.g:2764:1: ( ( ',' ) )
+            // InternalHenshin_text.g:2765:1: ( ',' )
             {
-            // InternalHenshin_text.g:2716:1: ( ',' )
-            // InternalHenshin_text.g:2717:2: ','
+            // InternalHenshin_text.g:2765:1: ( ',' )
+            // InternalHenshin_text.g:2766:2: ','
             {
              before(grammarAccess.getModelElementAccess().getCommaKeyword_0_4_1_0()); 
-            match(input,70,FOLLOW_2); 
+            match(input,74,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getCommaKeyword_0_4_1_0()); 
 
             }
@@ -9136,14 +9326,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0_4_1__1"
-    // InternalHenshin_text.g:2726:1: rule__ModelElement__Group_0_4_1__1 : rule__ModelElement__Group_0_4_1__1__Impl ;
+    // InternalHenshin_text.g:2775:1: rule__ModelElement__Group_0_4_1__1 : rule__ModelElement__Group_0_4_1__1__Impl ;
     public final void rule__ModelElement__Group_0_4_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2730:1: ( rule__ModelElement__Group_0_4_1__1__Impl )
-            // InternalHenshin_text.g:2731:2: rule__ModelElement__Group_0_4_1__1__Impl
+            // InternalHenshin_text.g:2779:1: ( rule__ModelElement__Group_0_4_1__1__Impl )
+            // InternalHenshin_text.g:2780:2: rule__ModelElement__Group_0_4_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__Group_0_4_1__1__Impl();
@@ -9169,21 +9359,21 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_0_4_1__1__Impl"
-    // InternalHenshin_text.g:2737:1: rule__ModelElement__Group_0_4_1__1__Impl : ( ( rule__ModelElement__ParametersAssignment_0_4_1_1 ) ) ;
+    // InternalHenshin_text.g:2786:1: rule__ModelElement__Group_0_4_1__1__Impl : ( ( rule__ModelElement__ParametersAssignment_0_4_1_1 ) ) ;
     public final void rule__ModelElement__Group_0_4_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2741:1: ( ( ( rule__ModelElement__ParametersAssignment_0_4_1_1 ) ) )
-            // InternalHenshin_text.g:2742:1: ( ( rule__ModelElement__ParametersAssignment_0_4_1_1 ) )
+            // InternalHenshin_text.g:2790:1: ( ( ( rule__ModelElement__ParametersAssignment_0_4_1_1 ) ) )
+            // InternalHenshin_text.g:2791:1: ( ( rule__ModelElement__ParametersAssignment_0_4_1_1 ) )
             {
-            // InternalHenshin_text.g:2742:1: ( ( rule__ModelElement__ParametersAssignment_0_4_1_1 ) )
-            // InternalHenshin_text.g:2743:2: ( rule__ModelElement__ParametersAssignment_0_4_1_1 )
+            // InternalHenshin_text.g:2791:1: ( ( rule__ModelElement__ParametersAssignment_0_4_1_1 ) )
+            // InternalHenshin_text.g:2792:2: ( rule__ModelElement__ParametersAssignment_0_4_1_1 )
             {
              before(grammarAccess.getModelElementAccess().getParametersAssignment_0_4_1_1()); 
-            // InternalHenshin_text.g:2744:2: ( rule__ModelElement__ParametersAssignment_0_4_1_1 )
-            // InternalHenshin_text.g:2744:3: rule__ModelElement__ParametersAssignment_0_4_1_1
+            // InternalHenshin_text.g:2793:2: ( rule__ModelElement__ParametersAssignment_0_4_1_1 )
+            // InternalHenshin_text.g:2793:3: rule__ModelElement__ParametersAssignment_0_4_1_1
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__ParametersAssignment_0_4_1_1();
@@ -9216,14 +9406,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__0"
-    // InternalHenshin_text.g:2753:1: rule__ModelElement__Group_1__0 : rule__ModelElement__Group_1__0__Impl rule__ModelElement__Group_1__1 ;
+    // InternalHenshin_text.g:2802:1: rule__ModelElement__Group_1__0 : rule__ModelElement__Group_1__0__Impl rule__ModelElement__Group_1__1 ;
     public final void rule__ModelElement__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2757:1: ( rule__ModelElement__Group_1__0__Impl rule__ModelElement__Group_1__1 )
-            // InternalHenshin_text.g:2758:2: rule__ModelElement__Group_1__0__Impl rule__ModelElement__Group_1__1
+            // InternalHenshin_text.g:2806:1: ( rule__ModelElement__Group_1__0__Impl rule__ModelElement__Group_1__1 )
+            // InternalHenshin_text.g:2807:2: rule__ModelElement__Group_1__0__Impl rule__ModelElement__Group_1__1
             {
             pushFollow(FOLLOW_7);
             rule__ModelElement__Group_1__0__Impl();
@@ -9254,20 +9444,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__0__Impl"
-    // InternalHenshin_text.g:2765:1: rule__ModelElement__Group_1__0__Impl : ( 'unit' ) ;
+    // InternalHenshin_text.g:2814:1: rule__ModelElement__Group_1__0__Impl : ( 'unit' ) ;
     public final void rule__ModelElement__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2769:1: ( ( 'unit' ) )
-            // InternalHenshin_text.g:2770:1: ( 'unit' )
+            // InternalHenshin_text.g:2818:1: ( ( 'unit' ) )
+            // InternalHenshin_text.g:2819:1: ( 'unit' )
             {
-            // InternalHenshin_text.g:2770:1: ( 'unit' )
-            // InternalHenshin_text.g:2771:2: 'unit'
+            // InternalHenshin_text.g:2819:1: ( 'unit' )
+            // InternalHenshin_text.g:2820:2: 'unit'
             {
              before(grammarAccess.getModelElementAccess().getUnitKeyword_1_0()); 
-            match(input,71,FOLLOW_2); 
+            match(input,75,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getUnitKeyword_1_0()); 
 
             }
@@ -9291,14 +9481,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__1"
-    // InternalHenshin_text.g:2780:1: rule__ModelElement__Group_1__1 : rule__ModelElement__Group_1__1__Impl rule__ModelElement__Group_1__2 ;
+    // InternalHenshin_text.g:2829:1: rule__ModelElement__Group_1__1 : rule__ModelElement__Group_1__1__Impl rule__ModelElement__Group_1__2 ;
     public final void rule__ModelElement__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2784:1: ( rule__ModelElement__Group_1__1__Impl rule__ModelElement__Group_1__2 )
-            // InternalHenshin_text.g:2785:2: rule__ModelElement__Group_1__1__Impl rule__ModelElement__Group_1__2
+            // InternalHenshin_text.g:2833:1: ( rule__ModelElement__Group_1__1__Impl rule__ModelElement__Group_1__2 )
+            // InternalHenshin_text.g:2834:2: rule__ModelElement__Group_1__1__Impl rule__ModelElement__Group_1__2
             {
             pushFollow(FOLLOW_7);
             rule__ModelElement__Group_1__1__Impl();
@@ -9329,21 +9519,21 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__1__Impl"
-    // InternalHenshin_text.g:2792:1: rule__ModelElement__Group_1__1__Impl : ( () ) ;
+    // InternalHenshin_text.g:2841:1: rule__ModelElement__Group_1__1__Impl : ( () ) ;
     public final void rule__ModelElement__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2796:1: ( ( () ) )
-            // InternalHenshin_text.g:2797:1: ( () )
+            // InternalHenshin_text.g:2845:1: ( ( () ) )
+            // InternalHenshin_text.g:2846:1: ( () )
             {
-            // InternalHenshin_text.g:2797:1: ( () )
-            // InternalHenshin_text.g:2798:2: ()
+            // InternalHenshin_text.g:2846:1: ( () )
+            // InternalHenshin_text.g:2847:2: ()
             {
              before(grammarAccess.getModelElementAccess().getUnitAction_1_1()); 
-            // InternalHenshin_text.g:2799:2: ()
-            // InternalHenshin_text.g:2799:3: 
+            // InternalHenshin_text.g:2848:2: ()
+            // InternalHenshin_text.g:2848:3: 
             {
             }
 
@@ -9366,14 +9556,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__2"
-    // InternalHenshin_text.g:2807:1: rule__ModelElement__Group_1__2 : rule__ModelElement__Group_1__2__Impl rule__ModelElement__Group_1__3 ;
+    // InternalHenshin_text.g:2856:1: rule__ModelElement__Group_1__2 : rule__ModelElement__Group_1__2__Impl rule__ModelElement__Group_1__3 ;
     public final void rule__ModelElement__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2811:1: ( rule__ModelElement__Group_1__2__Impl rule__ModelElement__Group_1__3 )
-            // InternalHenshin_text.g:2812:2: rule__ModelElement__Group_1__2__Impl rule__ModelElement__Group_1__3
+            // InternalHenshin_text.g:2860:1: ( rule__ModelElement__Group_1__2__Impl rule__ModelElement__Group_1__3 )
+            // InternalHenshin_text.g:2861:2: rule__ModelElement__Group_1__2__Impl rule__ModelElement__Group_1__3
             {
             pushFollow(FOLLOW_10);
             rule__ModelElement__Group_1__2__Impl();
@@ -9404,21 +9594,21 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__2__Impl"
-    // InternalHenshin_text.g:2819:1: rule__ModelElement__Group_1__2__Impl : ( ( rule__ModelElement__NameAssignment_1_2 ) ) ;
+    // InternalHenshin_text.g:2868:1: rule__ModelElement__Group_1__2__Impl : ( ( rule__ModelElement__NameAssignment_1_2 ) ) ;
     public final void rule__ModelElement__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2823:1: ( ( ( rule__ModelElement__NameAssignment_1_2 ) ) )
-            // InternalHenshin_text.g:2824:1: ( ( rule__ModelElement__NameAssignment_1_2 ) )
+            // InternalHenshin_text.g:2872:1: ( ( ( rule__ModelElement__NameAssignment_1_2 ) ) )
+            // InternalHenshin_text.g:2873:1: ( ( rule__ModelElement__NameAssignment_1_2 ) )
             {
-            // InternalHenshin_text.g:2824:1: ( ( rule__ModelElement__NameAssignment_1_2 ) )
-            // InternalHenshin_text.g:2825:2: ( rule__ModelElement__NameAssignment_1_2 )
+            // InternalHenshin_text.g:2873:1: ( ( rule__ModelElement__NameAssignment_1_2 ) )
+            // InternalHenshin_text.g:2874:2: ( rule__ModelElement__NameAssignment_1_2 )
             {
              before(grammarAccess.getModelElementAccess().getNameAssignment_1_2()); 
-            // InternalHenshin_text.g:2826:2: ( rule__ModelElement__NameAssignment_1_2 )
-            // InternalHenshin_text.g:2826:3: rule__ModelElement__NameAssignment_1_2
+            // InternalHenshin_text.g:2875:2: ( rule__ModelElement__NameAssignment_1_2 )
+            // InternalHenshin_text.g:2875:3: rule__ModelElement__NameAssignment_1_2
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__NameAssignment_1_2();
@@ -9451,14 +9641,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__3"
-    // InternalHenshin_text.g:2834:1: rule__ModelElement__Group_1__3 : rule__ModelElement__Group_1__3__Impl rule__ModelElement__Group_1__4 ;
+    // InternalHenshin_text.g:2883:1: rule__ModelElement__Group_1__3 : rule__ModelElement__Group_1__3__Impl rule__ModelElement__Group_1__4 ;
     public final void rule__ModelElement__Group_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2838:1: ( rule__ModelElement__Group_1__3__Impl rule__ModelElement__Group_1__4 )
-            // InternalHenshin_text.g:2839:2: rule__ModelElement__Group_1__3__Impl rule__ModelElement__Group_1__4
+            // InternalHenshin_text.g:2887:1: ( rule__ModelElement__Group_1__3__Impl rule__ModelElement__Group_1__4 )
+            // InternalHenshin_text.g:2888:2: rule__ModelElement__Group_1__3__Impl rule__ModelElement__Group_1__4
             {
             pushFollow(FOLLOW_11);
             rule__ModelElement__Group_1__3__Impl();
@@ -9489,20 +9679,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__3__Impl"
-    // InternalHenshin_text.g:2846:1: rule__ModelElement__Group_1__3__Impl : ( '(' ) ;
+    // InternalHenshin_text.g:2895:1: rule__ModelElement__Group_1__3__Impl : ( '(' ) ;
     public final void rule__ModelElement__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2850:1: ( ( '(' ) )
-            // InternalHenshin_text.g:2851:1: ( '(' )
+            // InternalHenshin_text.g:2899:1: ( ( '(' ) )
+            // InternalHenshin_text.g:2900:1: ( '(' )
             {
-            // InternalHenshin_text.g:2851:1: ( '(' )
-            // InternalHenshin_text.g:2852:2: '('
+            // InternalHenshin_text.g:2900:1: ( '(' )
+            // InternalHenshin_text.g:2901:2: '('
             {
              before(grammarAccess.getModelElementAccess().getLeftParenthesisKeyword_1_3()); 
-            match(input,66,FOLLOW_2); 
+            match(input,70,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getLeftParenthesisKeyword_1_3()); 
 
             }
@@ -9526,14 +9716,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__4"
-    // InternalHenshin_text.g:2861:1: rule__ModelElement__Group_1__4 : rule__ModelElement__Group_1__4__Impl rule__ModelElement__Group_1__5 ;
+    // InternalHenshin_text.g:2910:1: rule__ModelElement__Group_1__4 : rule__ModelElement__Group_1__4__Impl rule__ModelElement__Group_1__5 ;
     public final void rule__ModelElement__Group_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2865:1: ( rule__ModelElement__Group_1__4__Impl rule__ModelElement__Group_1__5 )
-            // InternalHenshin_text.g:2866:2: rule__ModelElement__Group_1__4__Impl rule__ModelElement__Group_1__5
+            // InternalHenshin_text.g:2914:1: ( rule__ModelElement__Group_1__4__Impl rule__ModelElement__Group_1__5 )
+            // InternalHenshin_text.g:2915:2: rule__ModelElement__Group_1__4__Impl rule__ModelElement__Group_1__5
             {
             pushFollow(FOLLOW_11);
             rule__ModelElement__Group_1__4__Impl();
@@ -9564,29 +9754,29 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__4__Impl"
-    // InternalHenshin_text.g:2873:1: rule__ModelElement__Group_1__4__Impl : ( ( rule__ModelElement__Group_1_4__0 )? ) ;
+    // InternalHenshin_text.g:2922:1: rule__ModelElement__Group_1__4__Impl : ( ( rule__ModelElement__Group_1_4__0 )? ) ;
     public final void rule__ModelElement__Group_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2877:1: ( ( ( rule__ModelElement__Group_1_4__0 )? ) )
-            // InternalHenshin_text.g:2878:1: ( ( rule__ModelElement__Group_1_4__0 )? )
+            // InternalHenshin_text.g:2926:1: ( ( ( rule__ModelElement__Group_1_4__0 )? ) )
+            // InternalHenshin_text.g:2927:1: ( ( rule__ModelElement__Group_1_4__0 )? )
             {
-            // InternalHenshin_text.g:2878:1: ( ( rule__ModelElement__Group_1_4__0 )? )
-            // InternalHenshin_text.g:2879:2: ( rule__ModelElement__Group_1_4__0 )?
+            // InternalHenshin_text.g:2927:1: ( ( rule__ModelElement__Group_1_4__0 )? )
+            // InternalHenshin_text.g:2928:2: ( rule__ModelElement__Group_1_4__0 )?
             {
              before(grammarAccess.getModelElementAccess().getGroup_1_4()); 
-            // InternalHenshin_text.g:2880:2: ( rule__ModelElement__Group_1_4__0 )?
-            int alt27=2;
-            int LA27_0 = input.LA(1);
+            // InternalHenshin_text.g:2929:2: ( rule__ModelElement__Group_1_4__0 )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
 
-            if ( (LA27_0==RULE_ID) ) {
-                alt27=1;
+            if ( (LA28_0==RULE_ID||(LA28_0>=30 && LA28_0<=33)) ) {
+                alt28=1;
             }
-            switch (alt27) {
+            switch (alt28) {
                 case 1 :
-                    // InternalHenshin_text.g:2880:3: rule__ModelElement__Group_1_4__0
+                    // InternalHenshin_text.g:2929:3: rule__ModelElement__Group_1_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__ModelElement__Group_1_4__0();
@@ -9622,14 +9812,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__5"
-    // InternalHenshin_text.g:2888:1: rule__ModelElement__Group_1__5 : rule__ModelElement__Group_1__5__Impl rule__ModelElement__Group_1__6 ;
+    // InternalHenshin_text.g:2937:1: rule__ModelElement__Group_1__5 : rule__ModelElement__Group_1__5__Impl rule__ModelElement__Group_1__6 ;
     public final void rule__ModelElement__Group_1__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2892:1: ( rule__ModelElement__Group_1__5__Impl rule__ModelElement__Group_1__6 )
-            // InternalHenshin_text.g:2893:2: rule__ModelElement__Group_1__5__Impl rule__ModelElement__Group_1__6
+            // InternalHenshin_text.g:2941:1: ( rule__ModelElement__Group_1__5__Impl rule__ModelElement__Group_1__6 )
+            // InternalHenshin_text.g:2942:2: rule__ModelElement__Group_1__5__Impl rule__ModelElement__Group_1__6
             {
             pushFollow(FOLLOW_12);
             rule__ModelElement__Group_1__5__Impl();
@@ -9660,20 +9850,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__5__Impl"
-    // InternalHenshin_text.g:2900:1: rule__ModelElement__Group_1__5__Impl : ( ')' ) ;
+    // InternalHenshin_text.g:2949:1: rule__ModelElement__Group_1__5__Impl : ( ')' ) ;
     public final void rule__ModelElement__Group_1__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2904:1: ( ( ')' ) )
-            // InternalHenshin_text.g:2905:1: ( ')' )
+            // InternalHenshin_text.g:2953:1: ( ( ')' ) )
+            // InternalHenshin_text.g:2954:1: ( ')' )
             {
-            // InternalHenshin_text.g:2905:1: ( ')' )
-            // InternalHenshin_text.g:2906:2: ')'
+            // InternalHenshin_text.g:2954:1: ( ')' )
+            // InternalHenshin_text.g:2955:2: ')'
             {
              before(grammarAccess.getModelElementAccess().getRightParenthesisKeyword_1_5()); 
-            match(input,67,FOLLOW_2); 
+            match(input,71,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getRightParenthesisKeyword_1_5()); 
 
             }
@@ -9697,16 +9887,16 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__6"
-    // InternalHenshin_text.g:2915:1: rule__ModelElement__Group_1__6 : rule__ModelElement__Group_1__6__Impl rule__ModelElement__Group_1__7 ;
+    // InternalHenshin_text.g:2964:1: rule__ModelElement__Group_1__6 : rule__ModelElement__Group_1__6__Impl rule__ModelElement__Group_1__7 ;
     public final void rule__ModelElement__Group_1__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2919:1: ( rule__ModelElement__Group_1__6__Impl rule__ModelElement__Group_1__7 )
-            // InternalHenshin_text.g:2920:2: rule__ModelElement__Group_1__6__Impl rule__ModelElement__Group_1__7
+            // InternalHenshin_text.g:2968:1: ( rule__ModelElement__Group_1__6__Impl rule__ModelElement__Group_1__7 )
+            // InternalHenshin_text.g:2969:2: rule__ModelElement__Group_1__6__Impl rule__ModelElement__Group_1__7
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__ModelElement__Group_1__6__Impl();
 
             state._fsp--;
@@ -9735,20 +9925,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__6__Impl"
-    // InternalHenshin_text.g:2927:1: rule__ModelElement__Group_1__6__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:2976:1: rule__ModelElement__Group_1__6__Impl : ( '{' ) ;
     public final void rule__ModelElement__Group_1__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2931:1: ( ( '{' ) )
-            // InternalHenshin_text.g:2932:1: ( '{' )
+            // InternalHenshin_text.g:2980:1: ( ( '{' ) )
+            // InternalHenshin_text.g:2981:1: ( '{' )
             {
-            // InternalHenshin_text.g:2932:1: ( '{' )
-            // InternalHenshin_text.g:2933:2: '{'
+            // InternalHenshin_text.g:2981:1: ( '{' )
+            // InternalHenshin_text.g:2982:2: '{'
             {
              before(grammarAccess.getModelElementAccess().getLeftCurlyBracketKeyword_1_6()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getLeftCurlyBracketKeyword_1_6()); 
 
             }
@@ -9772,14 +9962,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__7"
-    // InternalHenshin_text.g:2942:1: rule__ModelElement__Group_1__7 : rule__ModelElement__Group_1__7__Impl rule__ModelElement__Group_1__8 ;
+    // InternalHenshin_text.g:2991:1: rule__ModelElement__Group_1__7 : rule__ModelElement__Group_1__7__Impl rule__ModelElement__Group_1__8 ;
     public final void rule__ModelElement__Group_1__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2946:1: ( rule__ModelElement__Group_1__7__Impl rule__ModelElement__Group_1__8 )
-            // InternalHenshin_text.g:2947:2: rule__ModelElement__Group_1__7__Impl rule__ModelElement__Group_1__8
+            // InternalHenshin_text.g:2995:1: ( rule__ModelElement__Group_1__7__Impl rule__ModelElement__Group_1__8 )
+            // InternalHenshin_text.g:2996:2: rule__ModelElement__Group_1__7__Impl rule__ModelElement__Group_1__8
             {
             pushFollow(FOLLOW_14);
             rule__ModelElement__Group_1__7__Impl();
@@ -9810,24 +10000,24 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__7__Impl"
-    // InternalHenshin_text.g:2954:1: rule__ModelElement__Group_1__7__Impl : ( ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) ) ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* ) ) ;
+    // InternalHenshin_text.g:3003:1: rule__ModelElement__Group_1__7__Impl : ( ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) ) ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* ) ) ;
     public final void rule__ModelElement__Group_1__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2958:1: ( ( ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) ) ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* ) ) )
-            // InternalHenshin_text.g:2959:1: ( ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) ) ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* ) )
+            // InternalHenshin_text.g:3007:1: ( ( ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) ) ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* ) ) )
+            // InternalHenshin_text.g:3008:1: ( ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) ) ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* ) )
             {
-            // InternalHenshin_text.g:2959:1: ( ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) ) ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* ) )
-            // InternalHenshin_text.g:2960:2: ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) ) ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* )
+            // InternalHenshin_text.g:3008:1: ( ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) ) ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* ) )
+            // InternalHenshin_text.g:3009:2: ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) ) ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* )
             {
-            // InternalHenshin_text.g:2960:2: ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) )
-            // InternalHenshin_text.g:2961:3: ( rule__ModelElement__UnitElementsAssignment_1_7 )
+            // InternalHenshin_text.g:3009:2: ( ( rule__ModelElement__UnitElementsAssignment_1_7 ) )
+            // InternalHenshin_text.g:3010:3: ( rule__ModelElement__UnitElementsAssignment_1_7 )
             {
              before(grammarAccess.getModelElementAccess().getUnitElementsAssignment_1_7()); 
-            // InternalHenshin_text.g:2962:3: ( rule__ModelElement__UnitElementsAssignment_1_7 )
-            // InternalHenshin_text.g:2962:4: rule__ModelElement__UnitElementsAssignment_1_7
+            // InternalHenshin_text.g:3011:3: ( rule__ModelElement__UnitElementsAssignment_1_7 )
+            // InternalHenshin_text.g:3011:4: rule__ModelElement__UnitElementsAssignment_1_7
             {
             pushFollow(FOLLOW_3);
             rule__ModelElement__UnitElementsAssignment_1_7();
@@ -9841,24 +10031,24 @@
 
             }
 
-            // InternalHenshin_text.g:2965:2: ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* )
-            // InternalHenshin_text.g:2966:3: ( rule__ModelElement__UnitElementsAssignment_1_7 )*
+            // InternalHenshin_text.g:3014:2: ( ( rule__ModelElement__UnitElementsAssignment_1_7 )* )
+            // InternalHenshin_text.g:3015:3: ( rule__ModelElement__UnitElementsAssignment_1_7 )*
             {
              before(grammarAccess.getModelElementAccess().getUnitElementsAssignment_1_7()); 
-            // InternalHenshin_text.g:2967:3: ( rule__ModelElement__UnitElementsAssignment_1_7 )*
-            loop28:
+            // InternalHenshin_text.g:3016:3: ( rule__ModelElement__UnitElementsAssignment_1_7 )*
+            loop29:
             do {
-                int alt28=2;
-                int LA28_0 = input.LA(1);
+                int alt29=2;
+                int LA29_0 = input.LA(1);
 
-                if ( (LA28_0==RULE_ID||LA28_0==68||(LA28_0>=91 && LA28_0<=94)||(LA28_0>=97 && LA28_0<=99)) ) {
-                    alt28=1;
+                if ( (LA29_0==RULE_ID||LA29_0==72||(LA29_0>=95 && LA29_0<=98)||(LA29_0>=101 && LA29_0<=103)) ) {
+                    alt29=1;
                 }
 
 
-                switch (alt28) {
+                switch (alt29) {
             	case 1 :
-            	    // InternalHenshin_text.g:2967:4: rule__ModelElement__UnitElementsAssignment_1_7
+            	    // InternalHenshin_text.g:3016:4: rule__ModelElement__UnitElementsAssignment_1_7
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__ModelElement__UnitElementsAssignment_1_7();
@@ -9870,7 +10060,7 @@
             	    break;
 
             	default :
-            	    break loop28;
+            	    break loop29;
                 }
             } while (true);
 
@@ -9900,14 +10090,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__8"
-    // InternalHenshin_text.g:2976:1: rule__ModelElement__Group_1__8 : rule__ModelElement__Group_1__8__Impl ;
+    // InternalHenshin_text.g:3025:1: rule__ModelElement__Group_1__8 : rule__ModelElement__Group_1__8__Impl ;
     public final void rule__ModelElement__Group_1__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2980:1: ( rule__ModelElement__Group_1__8__Impl )
-            // InternalHenshin_text.g:2981:2: rule__ModelElement__Group_1__8__Impl
+            // InternalHenshin_text.g:3029:1: ( rule__ModelElement__Group_1__8__Impl )
+            // InternalHenshin_text.g:3030:2: rule__ModelElement__Group_1__8__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__Group_1__8__Impl();
@@ -9933,20 +10123,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1__8__Impl"
-    // InternalHenshin_text.g:2987:1: rule__ModelElement__Group_1__8__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:3036:1: rule__ModelElement__Group_1__8__Impl : ( '}' ) ;
     public final void rule__ModelElement__Group_1__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:2991:1: ( ( '}' ) )
-            // InternalHenshin_text.g:2992:1: ( '}' )
+            // InternalHenshin_text.g:3040:1: ( ( '}' ) )
+            // InternalHenshin_text.g:3041:1: ( '}' )
             {
-            // InternalHenshin_text.g:2992:1: ( '}' )
-            // InternalHenshin_text.g:2993:2: '}'
+            // InternalHenshin_text.g:3041:1: ( '}' )
+            // InternalHenshin_text.g:3042:2: '}'
             {
              before(grammarAccess.getModelElementAccess().getRightCurlyBracketKeyword_1_8()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getRightCurlyBracketKeyword_1_8()); 
 
             }
@@ -9970,14 +10160,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1_4__0"
-    // InternalHenshin_text.g:3003:1: rule__ModelElement__Group_1_4__0 : rule__ModelElement__Group_1_4__0__Impl rule__ModelElement__Group_1_4__1 ;
+    // InternalHenshin_text.g:3052:1: rule__ModelElement__Group_1_4__0 : rule__ModelElement__Group_1_4__0__Impl rule__ModelElement__Group_1_4__1 ;
     public final void rule__ModelElement__Group_1_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3007:1: ( rule__ModelElement__Group_1_4__0__Impl rule__ModelElement__Group_1_4__1 )
-            // InternalHenshin_text.g:3008:2: rule__ModelElement__Group_1_4__0__Impl rule__ModelElement__Group_1_4__1
+            // InternalHenshin_text.g:3056:1: ( rule__ModelElement__Group_1_4__0__Impl rule__ModelElement__Group_1_4__1 )
+            // InternalHenshin_text.g:3057:2: rule__ModelElement__Group_1_4__0__Impl rule__ModelElement__Group_1_4__1
             {
             pushFollow(FOLLOW_16);
             rule__ModelElement__Group_1_4__0__Impl();
@@ -10008,21 +10198,21 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1_4__0__Impl"
-    // InternalHenshin_text.g:3015:1: rule__ModelElement__Group_1_4__0__Impl : ( ( rule__ModelElement__ParametersAssignment_1_4_0 ) ) ;
+    // InternalHenshin_text.g:3064:1: rule__ModelElement__Group_1_4__0__Impl : ( ( rule__ModelElement__ParametersAssignment_1_4_0 ) ) ;
     public final void rule__ModelElement__Group_1_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3019:1: ( ( ( rule__ModelElement__ParametersAssignment_1_4_0 ) ) )
-            // InternalHenshin_text.g:3020:1: ( ( rule__ModelElement__ParametersAssignment_1_4_0 ) )
+            // InternalHenshin_text.g:3068:1: ( ( ( rule__ModelElement__ParametersAssignment_1_4_0 ) ) )
+            // InternalHenshin_text.g:3069:1: ( ( rule__ModelElement__ParametersAssignment_1_4_0 ) )
             {
-            // InternalHenshin_text.g:3020:1: ( ( rule__ModelElement__ParametersAssignment_1_4_0 ) )
-            // InternalHenshin_text.g:3021:2: ( rule__ModelElement__ParametersAssignment_1_4_0 )
+            // InternalHenshin_text.g:3069:1: ( ( rule__ModelElement__ParametersAssignment_1_4_0 ) )
+            // InternalHenshin_text.g:3070:2: ( rule__ModelElement__ParametersAssignment_1_4_0 )
             {
              before(grammarAccess.getModelElementAccess().getParametersAssignment_1_4_0()); 
-            // InternalHenshin_text.g:3022:2: ( rule__ModelElement__ParametersAssignment_1_4_0 )
-            // InternalHenshin_text.g:3022:3: rule__ModelElement__ParametersAssignment_1_4_0
+            // InternalHenshin_text.g:3071:2: ( rule__ModelElement__ParametersAssignment_1_4_0 )
+            // InternalHenshin_text.g:3071:3: rule__ModelElement__ParametersAssignment_1_4_0
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__ParametersAssignment_1_4_0();
@@ -10055,14 +10245,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1_4__1"
-    // InternalHenshin_text.g:3030:1: rule__ModelElement__Group_1_4__1 : rule__ModelElement__Group_1_4__1__Impl ;
+    // InternalHenshin_text.g:3079:1: rule__ModelElement__Group_1_4__1 : rule__ModelElement__Group_1_4__1__Impl ;
     public final void rule__ModelElement__Group_1_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3034:1: ( rule__ModelElement__Group_1_4__1__Impl )
-            // InternalHenshin_text.g:3035:2: rule__ModelElement__Group_1_4__1__Impl
+            // InternalHenshin_text.g:3083:1: ( rule__ModelElement__Group_1_4__1__Impl )
+            // InternalHenshin_text.g:3084:2: rule__ModelElement__Group_1_4__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__Group_1_4__1__Impl();
@@ -10088,33 +10278,33 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1_4__1__Impl"
-    // InternalHenshin_text.g:3041:1: rule__ModelElement__Group_1_4__1__Impl : ( ( rule__ModelElement__Group_1_4_1__0 )* ) ;
+    // InternalHenshin_text.g:3090:1: rule__ModelElement__Group_1_4__1__Impl : ( ( rule__ModelElement__Group_1_4_1__0 )* ) ;
     public final void rule__ModelElement__Group_1_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3045:1: ( ( ( rule__ModelElement__Group_1_4_1__0 )* ) )
-            // InternalHenshin_text.g:3046:1: ( ( rule__ModelElement__Group_1_4_1__0 )* )
+            // InternalHenshin_text.g:3094:1: ( ( ( rule__ModelElement__Group_1_4_1__0 )* ) )
+            // InternalHenshin_text.g:3095:1: ( ( rule__ModelElement__Group_1_4_1__0 )* )
             {
-            // InternalHenshin_text.g:3046:1: ( ( rule__ModelElement__Group_1_4_1__0 )* )
-            // InternalHenshin_text.g:3047:2: ( rule__ModelElement__Group_1_4_1__0 )*
+            // InternalHenshin_text.g:3095:1: ( ( rule__ModelElement__Group_1_4_1__0 )* )
+            // InternalHenshin_text.g:3096:2: ( rule__ModelElement__Group_1_4_1__0 )*
             {
              before(grammarAccess.getModelElementAccess().getGroup_1_4_1()); 
-            // InternalHenshin_text.g:3048:2: ( rule__ModelElement__Group_1_4_1__0 )*
-            loop29:
+            // InternalHenshin_text.g:3097:2: ( rule__ModelElement__Group_1_4_1__0 )*
+            loop30:
             do {
-                int alt29=2;
-                int LA29_0 = input.LA(1);
+                int alt30=2;
+                int LA30_0 = input.LA(1);
 
-                if ( (LA29_0==70) ) {
-                    alt29=1;
+                if ( (LA30_0==74) ) {
+                    alt30=1;
                 }
 
 
-                switch (alt29) {
+                switch (alt30) {
             	case 1 :
-            	    // InternalHenshin_text.g:3048:3: rule__ModelElement__Group_1_4_1__0
+            	    // InternalHenshin_text.g:3097:3: rule__ModelElement__Group_1_4_1__0
             	    {
             	    pushFollow(FOLLOW_17);
             	    rule__ModelElement__Group_1_4_1__0();
@@ -10126,7 +10316,7 @@
             	    break;
 
             	default :
-            	    break loop29;
+            	    break loop30;
                 }
             } while (true);
 
@@ -10153,16 +10343,16 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1_4_1__0"
-    // InternalHenshin_text.g:3057:1: rule__ModelElement__Group_1_4_1__0 : rule__ModelElement__Group_1_4_1__0__Impl rule__ModelElement__Group_1_4_1__1 ;
+    // InternalHenshin_text.g:3106:1: rule__ModelElement__Group_1_4_1__0 : rule__ModelElement__Group_1_4_1__0__Impl rule__ModelElement__Group_1_4_1__1 ;
     public final void rule__ModelElement__Group_1_4_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3061:1: ( rule__ModelElement__Group_1_4_1__0__Impl rule__ModelElement__Group_1_4_1__1 )
-            // InternalHenshin_text.g:3062:2: rule__ModelElement__Group_1_4_1__0__Impl rule__ModelElement__Group_1_4_1__1
+            // InternalHenshin_text.g:3110:1: ( rule__ModelElement__Group_1_4_1__0__Impl rule__ModelElement__Group_1_4_1__1 )
+            // InternalHenshin_text.g:3111:2: rule__ModelElement__Group_1_4_1__0__Impl rule__ModelElement__Group_1_4_1__1
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_18);
             rule__ModelElement__Group_1_4_1__0__Impl();
 
             state._fsp--;
@@ -10191,20 +10381,20 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1_4_1__0__Impl"
-    // InternalHenshin_text.g:3069:1: rule__ModelElement__Group_1_4_1__0__Impl : ( ',' ) ;
+    // InternalHenshin_text.g:3118:1: rule__ModelElement__Group_1_4_1__0__Impl : ( ',' ) ;
     public final void rule__ModelElement__Group_1_4_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3073:1: ( ( ',' ) )
-            // InternalHenshin_text.g:3074:1: ( ',' )
+            // InternalHenshin_text.g:3122:1: ( ( ',' ) )
+            // InternalHenshin_text.g:3123:1: ( ',' )
             {
-            // InternalHenshin_text.g:3074:1: ( ',' )
-            // InternalHenshin_text.g:3075:2: ','
+            // InternalHenshin_text.g:3123:1: ( ',' )
+            // InternalHenshin_text.g:3124:2: ','
             {
              before(grammarAccess.getModelElementAccess().getCommaKeyword_1_4_1_0()); 
-            match(input,70,FOLLOW_2); 
+            match(input,74,FOLLOW_2); 
              after(grammarAccess.getModelElementAccess().getCommaKeyword_1_4_1_0()); 
 
             }
@@ -10228,14 +10418,14 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1_4_1__1"
-    // InternalHenshin_text.g:3084:1: rule__ModelElement__Group_1_4_1__1 : rule__ModelElement__Group_1_4_1__1__Impl ;
+    // InternalHenshin_text.g:3133:1: rule__ModelElement__Group_1_4_1__1 : rule__ModelElement__Group_1_4_1__1__Impl ;
     public final void rule__ModelElement__Group_1_4_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3088:1: ( rule__ModelElement__Group_1_4_1__1__Impl )
-            // InternalHenshin_text.g:3089:2: rule__ModelElement__Group_1_4_1__1__Impl
+            // InternalHenshin_text.g:3137:1: ( rule__ModelElement__Group_1_4_1__1__Impl )
+            // InternalHenshin_text.g:3138:2: rule__ModelElement__Group_1_4_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__Group_1_4_1__1__Impl();
@@ -10261,21 +10451,21 @@
 
 
     // $ANTLR start "rule__ModelElement__Group_1_4_1__1__Impl"
-    // InternalHenshin_text.g:3095:1: rule__ModelElement__Group_1_4_1__1__Impl : ( ( rule__ModelElement__ParametersAssignment_1_4_1_1 ) ) ;
+    // InternalHenshin_text.g:3144:1: rule__ModelElement__Group_1_4_1__1__Impl : ( ( rule__ModelElement__ParametersAssignment_1_4_1_1 ) ) ;
     public final void rule__ModelElement__Group_1_4_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3099:1: ( ( ( rule__ModelElement__ParametersAssignment_1_4_1_1 ) ) )
-            // InternalHenshin_text.g:3100:1: ( ( rule__ModelElement__ParametersAssignment_1_4_1_1 ) )
+            // InternalHenshin_text.g:3148:1: ( ( ( rule__ModelElement__ParametersAssignment_1_4_1_1 ) ) )
+            // InternalHenshin_text.g:3149:1: ( ( rule__ModelElement__ParametersAssignment_1_4_1_1 ) )
             {
-            // InternalHenshin_text.g:3100:1: ( ( rule__ModelElement__ParametersAssignment_1_4_1_1 ) )
-            // InternalHenshin_text.g:3101:2: ( rule__ModelElement__ParametersAssignment_1_4_1_1 )
+            // InternalHenshin_text.g:3149:1: ( ( rule__ModelElement__ParametersAssignment_1_4_1_1 ) )
+            // InternalHenshin_text.g:3150:2: ( rule__ModelElement__ParametersAssignment_1_4_1_1 )
             {
              before(grammarAccess.getModelElementAccess().getParametersAssignment_1_4_1_1()); 
-            // InternalHenshin_text.g:3102:2: ( rule__ModelElement__ParametersAssignment_1_4_1_1 )
-            // InternalHenshin_text.g:3102:3: rule__ModelElement__ParametersAssignment_1_4_1_1
+            // InternalHenshin_text.g:3151:2: ( rule__ModelElement__ParametersAssignment_1_4_1_1 )
+            // InternalHenshin_text.g:3151:3: rule__ModelElement__ParametersAssignment_1_4_1_1
             {
             pushFollow(FOLLOW_2);
             rule__ModelElement__ParametersAssignment_1_4_1_1();
@@ -10308,14 +10498,14 @@
 
 
     // $ANTLR start "rule__JavaImport__Group__0"
-    // InternalHenshin_text.g:3111:1: rule__JavaImport__Group__0 : rule__JavaImport__Group__0__Impl rule__JavaImport__Group__1 ;
+    // InternalHenshin_text.g:3160:1: rule__JavaImport__Group__0 : rule__JavaImport__Group__0__Impl rule__JavaImport__Group__1 ;
     public final void rule__JavaImport__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3115:1: ( rule__JavaImport__Group__0__Impl rule__JavaImport__Group__1 )
-            // InternalHenshin_text.g:3116:2: rule__JavaImport__Group__0__Impl rule__JavaImport__Group__1
+            // InternalHenshin_text.g:3164:1: ( rule__JavaImport__Group__0__Impl rule__JavaImport__Group__1 )
+            // InternalHenshin_text.g:3165:2: rule__JavaImport__Group__0__Impl rule__JavaImport__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__JavaImport__Group__0__Impl();
@@ -10346,20 +10536,20 @@
 
 
     // $ANTLR start "rule__JavaImport__Group__0__Impl"
-    // InternalHenshin_text.g:3123:1: rule__JavaImport__Group__0__Impl : ( 'javaImport' ) ;
+    // InternalHenshin_text.g:3172:1: rule__JavaImport__Group__0__Impl : ( 'javaImport' ) ;
     public final void rule__JavaImport__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3127:1: ( ( 'javaImport' ) )
-            // InternalHenshin_text.g:3128:1: ( 'javaImport' )
+            // InternalHenshin_text.g:3176:1: ( ( 'javaImport' ) )
+            // InternalHenshin_text.g:3177:1: ( 'javaImport' )
             {
-            // InternalHenshin_text.g:3128:1: ( 'javaImport' )
-            // InternalHenshin_text.g:3129:2: 'javaImport'
+            // InternalHenshin_text.g:3177:1: ( 'javaImport' )
+            // InternalHenshin_text.g:3178:2: 'javaImport'
             {
              before(grammarAccess.getJavaImportAccess().getJavaImportKeyword_0()); 
-            match(input,72,FOLLOW_2); 
+            match(input,76,FOLLOW_2); 
              after(grammarAccess.getJavaImportAccess().getJavaImportKeyword_0()); 
 
             }
@@ -10383,14 +10573,14 @@
 
 
     // $ANTLR start "rule__JavaImport__Group__1"
-    // InternalHenshin_text.g:3138:1: rule__JavaImport__Group__1 : rule__JavaImport__Group__1__Impl ;
+    // InternalHenshin_text.g:3187:1: rule__JavaImport__Group__1 : rule__JavaImport__Group__1__Impl ;
     public final void rule__JavaImport__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3142:1: ( rule__JavaImport__Group__1__Impl )
-            // InternalHenshin_text.g:3143:2: rule__JavaImport__Group__1__Impl
+            // InternalHenshin_text.g:3191:1: ( rule__JavaImport__Group__1__Impl )
+            // InternalHenshin_text.g:3192:2: rule__JavaImport__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JavaImport__Group__1__Impl();
@@ -10416,21 +10606,21 @@
 
 
     // $ANTLR start "rule__JavaImport__Group__1__Impl"
-    // InternalHenshin_text.g:3149:1: rule__JavaImport__Group__1__Impl : ( ( rule__JavaImport__PackagenameAssignment_1 ) ) ;
+    // InternalHenshin_text.g:3198:1: rule__JavaImport__Group__1__Impl : ( ( rule__JavaImport__PackagenameAssignment_1 ) ) ;
     public final void rule__JavaImport__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3153:1: ( ( ( rule__JavaImport__PackagenameAssignment_1 ) ) )
-            // InternalHenshin_text.g:3154:1: ( ( rule__JavaImport__PackagenameAssignment_1 ) )
+            // InternalHenshin_text.g:3202:1: ( ( ( rule__JavaImport__PackagenameAssignment_1 ) ) )
+            // InternalHenshin_text.g:3203:1: ( ( rule__JavaImport__PackagenameAssignment_1 ) )
             {
-            // InternalHenshin_text.g:3154:1: ( ( rule__JavaImport__PackagenameAssignment_1 ) )
-            // InternalHenshin_text.g:3155:2: ( rule__JavaImport__PackagenameAssignment_1 )
+            // InternalHenshin_text.g:3203:1: ( ( rule__JavaImport__PackagenameAssignment_1 ) )
+            // InternalHenshin_text.g:3204:2: ( rule__JavaImport__PackagenameAssignment_1 )
             {
              before(grammarAccess.getJavaImportAccess().getPackagenameAssignment_1()); 
-            // InternalHenshin_text.g:3156:2: ( rule__JavaImport__PackagenameAssignment_1 )
-            // InternalHenshin_text.g:3156:3: rule__JavaImport__PackagenameAssignment_1
+            // InternalHenshin_text.g:3205:2: ( rule__JavaImport__PackagenameAssignment_1 )
+            // InternalHenshin_text.g:3205:3: rule__JavaImport__PackagenameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JavaImport__PackagenameAssignment_1();
@@ -10463,16 +10653,16 @@
 
 
     // $ANTLR start "rule__CheckDangling__Group__0"
-    // InternalHenshin_text.g:3165:1: rule__CheckDangling__Group__0 : rule__CheckDangling__Group__0__Impl rule__CheckDangling__Group__1 ;
+    // InternalHenshin_text.g:3214:1: rule__CheckDangling__Group__0 : rule__CheckDangling__Group__0__Impl rule__CheckDangling__Group__1 ;
     public final void rule__CheckDangling__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3169:1: ( rule__CheckDangling__Group__0__Impl rule__CheckDangling__Group__1 )
-            // InternalHenshin_text.g:3170:2: rule__CheckDangling__Group__0__Impl rule__CheckDangling__Group__1
+            // InternalHenshin_text.g:3218:1: ( rule__CheckDangling__Group__0__Impl rule__CheckDangling__Group__1 )
+            // InternalHenshin_text.g:3219:2: rule__CheckDangling__Group__0__Impl rule__CheckDangling__Group__1
             {
-            pushFollow(FOLLOW_19);
+            pushFollow(FOLLOW_20);
             rule__CheckDangling__Group__0__Impl();
 
             state._fsp--;
@@ -10501,20 +10691,20 @@
 
 
     // $ANTLR start "rule__CheckDangling__Group__0__Impl"
-    // InternalHenshin_text.g:3177:1: rule__CheckDangling__Group__0__Impl : ( 'checkDangling' ) ;
+    // InternalHenshin_text.g:3226:1: rule__CheckDangling__Group__0__Impl : ( 'checkDangling' ) ;
     public final void rule__CheckDangling__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3181:1: ( ( 'checkDangling' ) )
-            // InternalHenshin_text.g:3182:1: ( 'checkDangling' )
+            // InternalHenshin_text.g:3230:1: ( ( 'checkDangling' ) )
+            // InternalHenshin_text.g:3231:1: ( 'checkDangling' )
             {
-            // InternalHenshin_text.g:3182:1: ( 'checkDangling' )
-            // InternalHenshin_text.g:3183:2: 'checkDangling'
+            // InternalHenshin_text.g:3231:1: ( 'checkDangling' )
+            // InternalHenshin_text.g:3232:2: 'checkDangling'
             {
              before(grammarAccess.getCheckDanglingAccess().getCheckDanglingKeyword_0()); 
-            match(input,73,FOLLOW_2); 
+            match(input,77,FOLLOW_2); 
              after(grammarAccess.getCheckDanglingAccess().getCheckDanglingKeyword_0()); 
 
             }
@@ -10538,14 +10728,14 @@
 
 
     // $ANTLR start "rule__CheckDangling__Group__1"
-    // InternalHenshin_text.g:3192:1: rule__CheckDangling__Group__1 : rule__CheckDangling__Group__1__Impl ;
+    // InternalHenshin_text.g:3241:1: rule__CheckDangling__Group__1 : rule__CheckDangling__Group__1__Impl ;
     public final void rule__CheckDangling__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3196:1: ( rule__CheckDangling__Group__1__Impl )
-            // InternalHenshin_text.g:3197:2: rule__CheckDangling__Group__1__Impl
+            // InternalHenshin_text.g:3245:1: ( rule__CheckDangling__Group__1__Impl )
+            // InternalHenshin_text.g:3246:2: rule__CheckDangling__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__CheckDangling__Group__1__Impl();
@@ -10571,21 +10761,21 @@
 
 
     // $ANTLR start "rule__CheckDangling__Group__1__Impl"
-    // InternalHenshin_text.g:3203:1: rule__CheckDangling__Group__1__Impl : ( ( rule__CheckDangling__CheckDanglingAssignment_1 ) ) ;
+    // InternalHenshin_text.g:3252:1: rule__CheckDangling__Group__1__Impl : ( ( rule__CheckDangling__CheckDanglingAssignment_1 ) ) ;
     public final void rule__CheckDangling__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3207:1: ( ( ( rule__CheckDangling__CheckDanglingAssignment_1 ) ) )
-            // InternalHenshin_text.g:3208:1: ( ( rule__CheckDangling__CheckDanglingAssignment_1 ) )
+            // InternalHenshin_text.g:3256:1: ( ( ( rule__CheckDangling__CheckDanglingAssignment_1 ) ) )
+            // InternalHenshin_text.g:3257:1: ( ( rule__CheckDangling__CheckDanglingAssignment_1 ) )
             {
-            // InternalHenshin_text.g:3208:1: ( ( rule__CheckDangling__CheckDanglingAssignment_1 ) )
-            // InternalHenshin_text.g:3209:2: ( rule__CheckDangling__CheckDanglingAssignment_1 )
+            // InternalHenshin_text.g:3257:1: ( ( rule__CheckDangling__CheckDanglingAssignment_1 ) )
+            // InternalHenshin_text.g:3258:2: ( rule__CheckDangling__CheckDanglingAssignment_1 )
             {
              before(grammarAccess.getCheckDanglingAccess().getCheckDanglingAssignment_1()); 
-            // InternalHenshin_text.g:3210:2: ( rule__CheckDangling__CheckDanglingAssignment_1 )
-            // InternalHenshin_text.g:3210:3: rule__CheckDangling__CheckDanglingAssignment_1
+            // InternalHenshin_text.g:3259:2: ( rule__CheckDangling__CheckDanglingAssignment_1 )
+            // InternalHenshin_text.g:3259:3: rule__CheckDangling__CheckDanglingAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__CheckDangling__CheckDanglingAssignment_1();
@@ -10618,16 +10808,16 @@
 
 
     // $ANTLR start "rule__InjectiveMatching__Group__0"
-    // InternalHenshin_text.g:3219:1: rule__InjectiveMatching__Group__0 : rule__InjectiveMatching__Group__0__Impl rule__InjectiveMatching__Group__1 ;
+    // InternalHenshin_text.g:3268:1: rule__InjectiveMatching__Group__0 : rule__InjectiveMatching__Group__0__Impl rule__InjectiveMatching__Group__1 ;
     public final void rule__InjectiveMatching__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3223:1: ( rule__InjectiveMatching__Group__0__Impl rule__InjectiveMatching__Group__1 )
-            // InternalHenshin_text.g:3224:2: rule__InjectiveMatching__Group__0__Impl rule__InjectiveMatching__Group__1
+            // InternalHenshin_text.g:3272:1: ( rule__InjectiveMatching__Group__0__Impl rule__InjectiveMatching__Group__1 )
+            // InternalHenshin_text.g:3273:2: rule__InjectiveMatching__Group__0__Impl rule__InjectiveMatching__Group__1
             {
-            pushFollow(FOLLOW_19);
+            pushFollow(FOLLOW_20);
             rule__InjectiveMatching__Group__0__Impl();
 
             state._fsp--;
@@ -10656,20 +10846,20 @@
 
 
     // $ANTLR start "rule__InjectiveMatching__Group__0__Impl"
-    // InternalHenshin_text.g:3231:1: rule__InjectiveMatching__Group__0__Impl : ( 'injectiveMatching' ) ;
+    // InternalHenshin_text.g:3280:1: rule__InjectiveMatching__Group__0__Impl : ( 'injectiveMatching' ) ;
     public final void rule__InjectiveMatching__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3235:1: ( ( 'injectiveMatching' ) )
-            // InternalHenshin_text.g:3236:1: ( 'injectiveMatching' )
+            // InternalHenshin_text.g:3284:1: ( ( 'injectiveMatching' ) )
+            // InternalHenshin_text.g:3285:1: ( 'injectiveMatching' )
             {
-            // InternalHenshin_text.g:3236:1: ( 'injectiveMatching' )
-            // InternalHenshin_text.g:3237:2: 'injectiveMatching'
+            // InternalHenshin_text.g:3285:1: ( 'injectiveMatching' )
+            // InternalHenshin_text.g:3286:2: 'injectiveMatching'
             {
              before(grammarAccess.getInjectiveMatchingAccess().getInjectiveMatchingKeyword_0()); 
-            match(input,74,FOLLOW_2); 
+            match(input,78,FOLLOW_2); 
              after(grammarAccess.getInjectiveMatchingAccess().getInjectiveMatchingKeyword_0()); 
 
             }
@@ -10693,14 +10883,14 @@
 
 
     // $ANTLR start "rule__InjectiveMatching__Group__1"
-    // InternalHenshin_text.g:3246:1: rule__InjectiveMatching__Group__1 : rule__InjectiveMatching__Group__1__Impl ;
+    // InternalHenshin_text.g:3295:1: rule__InjectiveMatching__Group__1 : rule__InjectiveMatching__Group__1__Impl ;
     public final void rule__InjectiveMatching__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3250:1: ( rule__InjectiveMatching__Group__1__Impl )
-            // InternalHenshin_text.g:3251:2: rule__InjectiveMatching__Group__1__Impl
+            // InternalHenshin_text.g:3299:1: ( rule__InjectiveMatching__Group__1__Impl )
+            // InternalHenshin_text.g:3300:2: rule__InjectiveMatching__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__InjectiveMatching__Group__1__Impl();
@@ -10726,21 +10916,21 @@
 
 
     // $ANTLR start "rule__InjectiveMatching__Group__1__Impl"
-    // InternalHenshin_text.g:3257:1: rule__InjectiveMatching__Group__1__Impl : ( ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 ) ) ;
+    // InternalHenshin_text.g:3306:1: rule__InjectiveMatching__Group__1__Impl : ( ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 ) ) ;
     public final void rule__InjectiveMatching__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3261:1: ( ( ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 ) ) )
-            // InternalHenshin_text.g:3262:1: ( ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 ) )
+            // InternalHenshin_text.g:3310:1: ( ( ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 ) ) )
+            // InternalHenshin_text.g:3311:1: ( ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 ) )
             {
-            // InternalHenshin_text.g:3262:1: ( ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 ) )
-            // InternalHenshin_text.g:3263:2: ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 )
+            // InternalHenshin_text.g:3311:1: ( ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 ) )
+            // InternalHenshin_text.g:3312:2: ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 )
             {
              before(grammarAccess.getInjectiveMatchingAccess().getInjectiveMatchingAssignment_1()); 
-            // InternalHenshin_text.g:3264:2: ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 )
-            // InternalHenshin_text.g:3264:3: rule__InjectiveMatching__InjectiveMatchingAssignment_1
+            // InternalHenshin_text.g:3313:2: ( rule__InjectiveMatching__InjectiveMatchingAssignment_1 )
+            // InternalHenshin_text.g:3313:3: rule__InjectiveMatching__InjectiveMatchingAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__InjectiveMatching__InjectiveMatchingAssignment_1();
@@ -10773,16 +10963,16 @@
 
 
     // $ANTLR start "rule__Conditions__Group__0"
-    // InternalHenshin_text.g:3273:1: rule__Conditions__Group__0 : rule__Conditions__Group__0__Impl rule__Conditions__Group__1 ;
+    // InternalHenshin_text.g:3322:1: rule__Conditions__Group__0 : rule__Conditions__Group__0__Impl rule__Conditions__Group__1 ;
     public final void rule__Conditions__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3277:1: ( rule__Conditions__Group__0__Impl rule__Conditions__Group__1 )
-            // InternalHenshin_text.g:3278:2: rule__Conditions__Group__0__Impl rule__Conditions__Group__1
+            // InternalHenshin_text.g:3326:1: ( rule__Conditions__Group__0__Impl rule__Conditions__Group__1 )
+            // InternalHenshin_text.g:3327:2: rule__Conditions__Group__0__Impl rule__Conditions__Group__1
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_21);
             rule__Conditions__Group__0__Impl();
 
             state._fsp--;
@@ -10811,20 +11001,20 @@
 
 
     // $ANTLR start "rule__Conditions__Group__0__Impl"
-    // InternalHenshin_text.g:3285:1: rule__Conditions__Group__0__Impl : ( 'conditions' ) ;
+    // InternalHenshin_text.g:3334:1: rule__Conditions__Group__0__Impl : ( 'conditions' ) ;
     public final void rule__Conditions__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3289:1: ( ( 'conditions' ) )
-            // InternalHenshin_text.g:3290:1: ( 'conditions' )
+            // InternalHenshin_text.g:3338:1: ( ( 'conditions' ) )
+            // InternalHenshin_text.g:3339:1: ( 'conditions' )
             {
-            // InternalHenshin_text.g:3290:1: ( 'conditions' )
-            // InternalHenshin_text.g:3291:2: 'conditions'
+            // InternalHenshin_text.g:3339:1: ( 'conditions' )
+            // InternalHenshin_text.g:3340:2: 'conditions'
             {
              before(grammarAccess.getConditionsAccess().getConditionsKeyword_0()); 
-            match(input,75,FOLLOW_2); 
+            match(input,79,FOLLOW_2); 
              after(grammarAccess.getConditionsAccess().getConditionsKeyword_0()); 
 
             }
@@ -10848,16 +11038,16 @@
 
 
     // $ANTLR start "rule__Conditions__Group__1"
-    // InternalHenshin_text.g:3300:1: rule__Conditions__Group__1 : rule__Conditions__Group__1__Impl rule__Conditions__Group__2 ;
+    // InternalHenshin_text.g:3349:1: rule__Conditions__Group__1 : rule__Conditions__Group__1__Impl rule__Conditions__Group__2 ;
     public final void rule__Conditions__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3304:1: ( rule__Conditions__Group__1__Impl rule__Conditions__Group__2 )
-            // InternalHenshin_text.g:3305:2: rule__Conditions__Group__1__Impl rule__Conditions__Group__2
+            // InternalHenshin_text.g:3353:1: ( rule__Conditions__Group__1__Impl rule__Conditions__Group__2 )
+            // InternalHenshin_text.g:3354:2: rule__Conditions__Group__1__Impl rule__Conditions__Group__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__Conditions__Group__1__Impl();
 
             state._fsp--;
@@ -10886,20 +11076,20 @@
 
 
     // $ANTLR start "rule__Conditions__Group__1__Impl"
-    // InternalHenshin_text.g:3312:1: rule__Conditions__Group__1__Impl : ( '[' ) ;
+    // InternalHenshin_text.g:3361:1: rule__Conditions__Group__1__Impl : ( '[' ) ;
     public final void rule__Conditions__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3316:1: ( ( '[' ) )
-            // InternalHenshin_text.g:3317:1: ( '[' )
+            // InternalHenshin_text.g:3365:1: ( ( '[' ) )
+            // InternalHenshin_text.g:3366:1: ( '[' )
             {
-            // InternalHenshin_text.g:3317:1: ( '[' )
-            // InternalHenshin_text.g:3318:2: '['
+            // InternalHenshin_text.g:3366:1: ( '[' )
+            // InternalHenshin_text.g:3367:2: '['
             {
              before(grammarAccess.getConditionsAccess().getLeftSquareBracketKeyword_1()); 
-            match(input,76,FOLLOW_2); 
+            match(input,80,FOLLOW_2); 
              after(grammarAccess.getConditionsAccess().getLeftSquareBracketKeyword_1()); 
 
             }
@@ -10923,16 +11113,16 @@
 
 
     // $ANTLR start "rule__Conditions__Group__2"
-    // InternalHenshin_text.g:3327:1: rule__Conditions__Group__2 : rule__Conditions__Group__2__Impl rule__Conditions__Group__3 ;
+    // InternalHenshin_text.g:3376:1: rule__Conditions__Group__2 : rule__Conditions__Group__2__Impl rule__Conditions__Group__3 ;
     public final void rule__Conditions__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3331:1: ( rule__Conditions__Group__2__Impl rule__Conditions__Group__3 )
-            // InternalHenshin_text.g:3332:2: rule__Conditions__Group__2__Impl rule__Conditions__Group__3
+            // InternalHenshin_text.g:3380:1: ( rule__Conditions__Group__2__Impl rule__Conditions__Group__3 )
+            // InternalHenshin_text.g:3381:2: rule__Conditions__Group__2__Impl rule__Conditions__Group__3
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_23);
             rule__Conditions__Group__2__Impl();
 
             state._fsp--;
@@ -10961,21 +11151,21 @@
 
 
     // $ANTLR start "rule__Conditions__Group__2__Impl"
-    // InternalHenshin_text.g:3339:1: rule__Conditions__Group__2__Impl : ( ( rule__Conditions__AttributeConditionsAssignment_2 ) ) ;
+    // InternalHenshin_text.g:3388:1: rule__Conditions__Group__2__Impl : ( ( rule__Conditions__AttributeConditionsAssignment_2 ) ) ;
     public final void rule__Conditions__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3343:1: ( ( ( rule__Conditions__AttributeConditionsAssignment_2 ) ) )
-            // InternalHenshin_text.g:3344:1: ( ( rule__Conditions__AttributeConditionsAssignment_2 ) )
+            // InternalHenshin_text.g:3392:1: ( ( ( rule__Conditions__AttributeConditionsAssignment_2 ) ) )
+            // InternalHenshin_text.g:3393:1: ( ( rule__Conditions__AttributeConditionsAssignment_2 ) )
             {
-            // InternalHenshin_text.g:3344:1: ( ( rule__Conditions__AttributeConditionsAssignment_2 ) )
-            // InternalHenshin_text.g:3345:2: ( rule__Conditions__AttributeConditionsAssignment_2 )
+            // InternalHenshin_text.g:3393:1: ( ( rule__Conditions__AttributeConditionsAssignment_2 ) )
+            // InternalHenshin_text.g:3394:2: ( rule__Conditions__AttributeConditionsAssignment_2 )
             {
              before(grammarAccess.getConditionsAccess().getAttributeConditionsAssignment_2()); 
-            // InternalHenshin_text.g:3346:2: ( rule__Conditions__AttributeConditionsAssignment_2 )
-            // InternalHenshin_text.g:3346:3: rule__Conditions__AttributeConditionsAssignment_2
+            // InternalHenshin_text.g:3395:2: ( rule__Conditions__AttributeConditionsAssignment_2 )
+            // InternalHenshin_text.g:3395:3: rule__Conditions__AttributeConditionsAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__Conditions__AttributeConditionsAssignment_2();
@@ -11008,16 +11198,16 @@
 
 
     // $ANTLR start "rule__Conditions__Group__3"
-    // InternalHenshin_text.g:3354:1: rule__Conditions__Group__3 : rule__Conditions__Group__3__Impl rule__Conditions__Group__4 ;
+    // InternalHenshin_text.g:3403:1: rule__Conditions__Group__3 : rule__Conditions__Group__3__Impl rule__Conditions__Group__4 ;
     public final void rule__Conditions__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3358:1: ( rule__Conditions__Group__3__Impl rule__Conditions__Group__4 )
-            // InternalHenshin_text.g:3359:2: rule__Conditions__Group__3__Impl rule__Conditions__Group__4
+            // InternalHenshin_text.g:3407:1: ( rule__Conditions__Group__3__Impl rule__Conditions__Group__4 )
+            // InternalHenshin_text.g:3408:2: rule__Conditions__Group__3__Impl rule__Conditions__Group__4
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_23);
             rule__Conditions__Group__3__Impl();
 
             state._fsp--;
@@ -11046,33 +11236,33 @@
 
 
     // $ANTLR start "rule__Conditions__Group__3__Impl"
-    // InternalHenshin_text.g:3366:1: rule__Conditions__Group__3__Impl : ( ( rule__Conditions__Group_3__0 )* ) ;
+    // InternalHenshin_text.g:3415:1: rule__Conditions__Group__3__Impl : ( ( rule__Conditions__Group_3__0 )* ) ;
     public final void rule__Conditions__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3370:1: ( ( ( rule__Conditions__Group_3__0 )* ) )
-            // InternalHenshin_text.g:3371:1: ( ( rule__Conditions__Group_3__0 )* )
+            // InternalHenshin_text.g:3419:1: ( ( ( rule__Conditions__Group_3__0 )* ) )
+            // InternalHenshin_text.g:3420:1: ( ( rule__Conditions__Group_3__0 )* )
             {
-            // InternalHenshin_text.g:3371:1: ( ( rule__Conditions__Group_3__0 )* )
-            // InternalHenshin_text.g:3372:2: ( rule__Conditions__Group_3__0 )*
+            // InternalHenshin_text.g:3420:1: ( ( rule__Conditions__Group_3__0 )* )
+            // InternalHenshin_text.g:3421:2: ( rule__Conditions__Group_3__0 )*
             {
              before(grammarAccess.getConditionsAccess().getGroup_3()); 
-            // InternalHenshin_text.g:3373:2: ( rule__Conditions__Group_3__0 )*
-            loop30:
+            // InternalHenshin_text.g:3422:2: ( rule__Conditions__Group_3__0 )*
+            loop31:
             do {
-                int alt30=2;
-                int LA30_0 = input.LA(1);
+                int alt31=2;
+                int LA31_0 = input.LA(1);
 
-                if ( (LA30_0==70) ) {
-                    alt30=1;
+                if ( (LA31_0==74) ) {
+                    alt31=1;
                 }
 
 
-                switch (alt30) {
+                switch (alt31) {
             	case 1 :
-            	    // InternalHenshin_text.g:3373:3: rule__Conditions__Group_3__0
+            	    // InternalHenshin_text.g:3422:3: rule__Conditions__Group_3__0
             	    {
             	    pushFollow(FOLLOW_17);
             	    rule__Conditions__Group_3__0();
@@ -11084,7 +11274,7 @@
             	    break;
 
             	default :
-            	    break loop30;
+            	    break loop31;
                 }
             } while (true);
 
@@ -11111,14 +11301,14 @@
 
 
     // $ANTLR start "rule__Conditions__Group__4"
-    // InternalHenshin_text.g:3381:1: rule__Conditions__Group__4 : rule__Conditions__Group__4__Impl ;
+    // InternalHenshin_text.g:3430:1: rule__Conditions__Group__4 : rule__Conditions__Group__4__Impl ;
     public final void rule__Conditions__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3385:1: ( rule__Conditions__Group__4__Impl )
-            // InternalHenshin_text.g:3386:2: rule__Conditions__Group__4__Impl
+            // InternalHenshin_text.g:3434:1: ( rule__Conditions__Group__4__Impl )
+            // InternalHenshin_text.g:3435:2: rule__Conditions__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Conditions__Group__4__Impl();
@@ -11144,20 +11334,20 @@
 
 
     // $ANTLR start "rule__Conditions__Group__4__Impl"
-    // InternalHenshin_text.g:3392:1: rule__Conditions__Group__4__Impl : ( ']' ) ;
+    // InternalHenshin_text.g:3441:1: rule__Conditions__Group__4__Impl : ( ']' ) ;
     public final void rule__Conditions__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3396:1: ( ( ']' ) )
-            // InternalHenshin_text.g:3397:1: ( ']' )
+            // InternalHenshin_text.g:3445:1: ( ( ']' ) )
+            // InternalHenshin_text.g:3446:1: ( ']' )
             {
-            // InternalHenshin_text.g:3397:1: ( ']' )
-            // InternalHenshin_text.g:3398:2: ']'
+            // InternalHenshin_text.g:3446:1: ( ']' )
+            // InternalHenshin_text.g:3447:2: ']'
             {
              before(grammarAccess.getConditionsAccess().getRightSquareBracketKeyword_4()); 
-            match(input,77,FOLLOW_2); 
+            match(input,81,FOLLOW_2); 
              after(grammarAccess.getConditionsAccess().getRightSquareBracketKeyword_4()); 
 
             }
@@ -11181,16 +11371,16 @@
 
 
     // $ANTLR start "rule__Conditions__Group_3__0"
-    // InternalHenshin_text.g:3408:1: rule__Conditions__Group_3__0 : rule__Conditions__Group_3__0__Impl rule__Conditions__Group_3__1 ;
+    // InternalHenshin_text.g:3457:1: rule__Conditions__Group_3__0 : rule__Conditions__Group_3__0__Impl rule__Conditions__Group_3__1 ;
     public final void rule__Conditions__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3412:1: ( rule__Conditions__Group_3__0__Impl rule__Conditions__Group_3__1 )
-            // InternalHenshin_text.g:3413:2: rule__Conditions__Group_3__0__Impl rule__Conditions__Group_3__1
+            // InternalHenshin_text.g:3461:1: ( rule__Conditions__Group_3__0__Impl rule__Conditions__Group_3__1 )
+            // InternalHenshin_text.g:3462:2: rule__Conditions__Group_3__0__Impl rule__Conditions__Group_3__1
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__Conditions__Group_3__0__Impl();
 
             state._fsp--;
@@ -11219,20 +11409,20 @@
 
 
     // $ANTLR start "rule__Conditions__Group_3__0__Impl"
-    // InternalHenshin_text.g:3420:1: rule__Conditions__Group_3__0__Impl : ( ',' ) ;
+    // InternalHenshin_text.g:3469:1: rule__Conditions__Group_3__0__Impl : ( ',' ) ;
     public final void rule__Conditions__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3424:1: ( ( ',' ) )
-            // InternalHenshin_text.g:3425:1: ( ',' )
+            // InternalHenshin_text.g:3473:1: ( ( ',' ) )
+            // InternalHenshin_text.g:3474:1: ( ',' )
             {
-            // InternalHenshin_text.g:3425:1: ( ',' )
-            // InternalHenshin_text.g:3426:2: ','
+            // InternalHenshin_text.g:3474:1: ( ',' )
+            // InternalHenshin_text.g:3475:2: ','
             {
              before(grammarAccess.getConditionsAccess().getCommaKeyword_3_0()); 
-            match(input,70,FOLLOW_2); 
+            match(input,74,FOLLOW_2); 
              after(grammarAccess.getConditionsAccess().getCommaKeyword_3_0()); 
 
             }
@@ -11256,14 +11446,14 @@
 
 
     // $ANTLR start "rule__Conditions__Group_3__1"
-    // InternalHenshin_text.g:3435:1: rule__Conditions__Group_3__1 : rule__Conditions__Group_3__1__Impl ;
+    // InternalHenshin_text.g:3484:1: rule__Conditions__Group_3__1 : rule__Conditions__Group_3__1__Impl ;
     public final void rule__Conditions__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3439:1: ( rule__Conditions__Group_3__1__Impl )
-            // InternalHenshin_text.g:3440:2: rule__Conditions__Group_3__1__Impl
+            // InternalHenshin_text.g:3488:1: ( rule__Conditions__Group_3__1__Impl )
+            // InternalHenshin_text.g:3489:2: rule__Conditions__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Conditions__Group_3__1__Impl();
@@ -11289,21 +11479,21 @@
 
 
     // $ANTLR start "rule__Conditions__Group_3__1__Impl"
-    // InternalHenshin_text.g:3446:1: rule__Conditions__Group_3__1__Impl : ( ( rule__Conditions__AttributeConditionsAssignment_3_1 ) ) ;
+    // InternalHenshin_text.g:3495:1: rule__Conditions__Group_3__1__Impl : ( ( rule__Conditions__AttributeConditionsAssignment_3_1 ) ) ;
     public final void rule__Conditions__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3450:1: ( ( ( rule__Conditions__AttributeConditionsAssignment_3_1 ) ) )
-            // InternalHenshin_text.g:3451:1: ( ( rule__Conditions__AttributeConditionsAssignment_3_1 ) )
+            // InternalHenshin_text.g:3499:1: ( ( ( rule__Conditions__AttributeConditionsAssignment_3_1 ) ) )
+            // InternalHenshin_text.g:3500:1: ( ( rule__Conditions__AttributeConditionsAssignment_3_1 ) )
             {
-            // InternalHenshin_text.g:3451:1: ( ( rule__Conditions__AttributeConditionsAssignment_3_1 ) )
-            // InternalHenshin_text.g:3452:2: ( rule__Conditions__AttributeConditionsAssignment_3_1 )
+            // InternalHenshin_text.g:3500:1: ( ( rule__Conditions__AttributeConditionsAssignment_3_1 ) )
+            // InternalHenshin_text.g:3501:2: ( rule__Conditions__AttributeConditionsAssignment_3_1 )
             {
              before(grammarAccess.getConditionsAccess().getAttributeConditionsAssignment_3_1()); 
-            // InternalHenshin_text.g:3453:2: ( rule__Conditions__AttributeConditionsAssignment_3_1 )
-            // InternalHenshin_text.g:3453:3: rule__Conditions__AttributeConditionsAssignment_3_1
+            // InternalHenshin_text.g:3502:2: ( rule__Conditions__AttributeConditionsAssignment_3_1 )
+            // InternalHenshin_text.g:3502:3: rule__Conditions__AttributeConditionsAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__Conditions__AttributeConditionsAssignment_3_1();
@@ -11336,14 +11526,14 @@
 
 
     // $ANTLR start "rule__Graph__Group__0"
-    // InternalHenshin_text.g:3462:1: rule__Graph__Group__0 : rule__Graph__Group__0__Impl rule__Graph__Group__1 ;
+    // InternalHenshin_text.g:3511:1: rule__Graph__Group__0 : rule__Graph__Group__0__Impl rule__Graph__Group__1 ;
     public final void rule__Graph__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3466:1: ( rule__Graph__Group__0__Impl rule__Graph__Group__1 )
-            // InternalHenshin_text.g:3467:2: rule__Graph__Group__0__Impl rule__Graph__Group__1
+            // InternalHenshin_text.g:3515:1: ( rule__Graph__Group__0__Impl rule__Graph__Group__1 )
+            // InternalHenshin_text.g:3516:2: rule__Graph__Group__0__Impl rule__Graph__Group__1
             {
             pushFollow(FOLLOW_13);
             rule__Graph__Group__0__Impl();
@@ -11374,21 +11564,21 @@
 
 
     // $ANTLR start "rule__Graph__Group__0__Impl"
-    // InternalHenshin_text.g:3474:1: rule__Graph__Group__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:3523:1: rule__Graph__Group__0__Impl : ( () ) ;
     public final void rule__Graph__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3478:1: ( ( () ) )
-            // InternalHenshin_text.g:3479:1: ( () )
+            // InternalHenshin_text.g:3527:1: ( ( () ) )
+            // InternalHenshin_text.g:3528:1: ( () )
             {
-            // InternalHenshin_text.g:3479:1: ( () )
-            // InternalHenshin_text.g:3480:2: ()
+            // InternalHenshin_text.g:3528:1: ( () )
+            // InternalHenshin_text.g:3529:2: ()
             {
              before(grammarAccess.getGraphAccess().getGraphAction_0()); 
-            // InternalHenshin_text.g:3481:2: ()
-            // InternalHenshin_text.g:3481:3: 
+            // InternalHenshin_text.g:3530:2: ()
+            // InternalHenshin_text.g:3530:3: 
             {
             }
 
@@ -11411,14 +11601,14 @@
 
 
     // $ANTLR start "rule__Graph__Group__1"
-    // InternalHenshin_text.g:3489:1: rule__Graph__Group__1 : rule__Graph__Group__1__Impl rule__Graph__Group__2 ;
+    // InternalHenshin_text.g:3538:1: rule__Graph__Group__1 : rule__Graph__Group__1__Impl rule__Graph__Group__2 ;
     public final void rule__Graph__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3493:1: ( rule__Graph__Group__1__Impl rule__Graph__Group__2 )
-            // InternalHenshin_text.g:3494:2: rule__Graph__Group__1__Impl rule__Graph__Group__2
+            // InternalHenshin_text.g:3542:1: ( rule__Graph__Group__1__Impl rule__Graph__Group__2 )
+            // InternalHenshin_text.g:3543:2: rule__Graph__Group__1__Impl rule__Graph__Group__2
             {
             pushFollow(FOLLOW_12);
             rule__Graph__Group__1__Impl();
@@ -11449,20 +11639,20 @@
 
 
     // $ANTLR start "rule__Graph__Group__1__Impl"
-    // InternalHenshin_text.g:3501:1: rule__Graph__Group__1__Impl : ( 'graph' ) ;
+    // InternalHenshin_text.g:3550:1: rule__Graph__Group__1__Impl : ( 'graph' ) ;
     public final void rule__Graph__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3505:1: ( ( 'graph' ) )
-            // InternalHenshin_text.g:3506:1: ( 'graph' )
+            // InternalHenshin_text.g:3554:1: ( ( 'graph' ) )
+            // InternalHenshin_text.g:3555:1: ( 'graph' )
             {
-            // InternalHenshin_text.g:3506:1: ( 'graph' )
-            // InternalHenshin_text.g:3507:2: 'graph'
+            // InternalHenshin_text.g:3555:1: ( 'graph' )
+            // InternalHenshin_text.g:3556:2: 'graph'
             {
              before(grammarAccess.getGraphAccess().getGraphKeyword_1()); 
-            match(input,78,FOLLOW_2); 
+            match(input,82,FOLLOW_2); 
              after(grammarAccess.getGraphAccess().getGraphKeyword_1()); 
 
             }
@@ -11486,16 +11676,16 @@
 
 
     // $ANTLR start "rule__Graph__Group__2"
-    // InternalHenshin_text.g:3516:1: rule__Graph__Group__2 : rule__Graph__Group__2__Impl rule__Graph__Group__3 ;
+    // InternalHenshin_text.g:3565:1: rule__Graph__Group__2 : rule__Graph__Group__2__Impl rule__Graph__Group__3 ;
     public final void rule__Graph__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3520:1: ( rule__Graph__Group__2__Impl rule__Graph__Group__3 )
-            // InternalHenshin_text.g:3521:2: rule__Graph__Group__2__Impl rule__Graph__Group__3
+            // InternalHenshin_text.g:3569:1: ( rule__Graph__Group__2__Impl rule__Graph__Group__3 )
+            // InternalHenshin_text.g:3570:2: rule__Graph__Group__2__Impl rule__Graph__Group__3
             {
-            pushFollow(FOLLOW_23);
+            pushFollow(FOLLOW_24);
             rule__Graph__Group__2__Impl();
 
             state._fsp--;
@@ -11524,20 +11714,20 @@
 
 
     // $ANTLR start "rule__Graph__Group__2__Impl"
-    // InternalHenshin_text.g:3528:1: rule__Graph__Group__2__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:3577:1: rule__Graph__Group__2__Impl : ( '{' ) ;
     public final void rule__Graph__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3532:1: ( ( '{' ) )
-            // InternalHenshin_text.g:3533:1: ( '{' )
+            // InternalHenshin_text.g:3581:1: ( ( '{' ) )
+            // InternalHenshin_text.g:3582:1: ( '{' )
             {
-            // InternalHenshin_text.g:3533:1: ( '{' )
-            // InternalHenshin_text.g:3534:2: '{'
+            // InternalHenshin_text.g:3582:1: ( '{' )
+            // InternalHenshin_text.g:3583:2: '{'
             {
              before(grammarAccess.getGraphAccess().getLeftCurlyBracketKeyword_2()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getGraphAccess().getLeftCurlyBracketKeyword_2()); 
 
             }
@@ -11561,16 +11751,16 @@
 
 
     // $ANTLR start "rule__Graph__Group__3"
-    // InternalHenshin_text.g:3543:1: rule__Graph__Group__3 : rule__Graph__Group__3__Impl rule__Graph__Group__4 ;
+    // InternalHenshin_text.g:3592:1: rule__Graph__Group__3 : rule__Graph__Group__3__Impl rule__Graph__Group__4 ;
     public final void rule__Graph__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3547:1: ( rule__Graph__Group__3__Impl rule__Graph__Group__4 )
-            // InternalHenshin_text.g:3548:2: rule__Graph__Group__3__Impl rule__Graph__Group__4
+            // InternalHenshin_text.g:3596:1: ( rule__Graph__Group__3__Impl rule__Graph__Group__4 )
+            // InternalHenshin_text.g:3597:2: rule__Graph__Group__3__Impl rule__Graph__Group__4
             {
-            pushFollow(FOLLOW_23);
+            pushFollow(FOLLOW_24);
             rule__Graph__Group__3__Impl();
 
             state._fsp--;
@@ -11599,35 +11789,35 @@
 
 
     // $ANTLR start "rule__Graph__Group__3__Impl"
-    // InternalHenshin_text.g:3555:1: rule__Graph__Group__3__Impl : ( ( rule__Graph__GraphElementsAssignment_3 )* ) ;
+    // InternalHenshin_text.g:3604:1: rule__Graph__Group__3__Impl : ( ( rule__Graph__GraphElementsAssignment_3 )* ) ;
     public final void rule__Graph__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3559:1: ( ( ( rule__Graph__GraphElementsAssignment_3 )* ) )
-            // InternalHenshin_text.g:3560:1: ( ( rule__Graph__GraphElementsAssignment_3 )* )
+            // InternalHenshin_text.g:3608:1: ( ( ( rule__Graph__GraphElementsAssignment_3 )* ) )
+            // InternalHenshin_text.g:3609:1: ( ( rule__Graph__GraphElementsAssignment_3 )* )
             {
-            // InternalHenshin_text.g:3560:1: ( ( rule__Graph__GraphElementsAssignment_3 )* )
-            // InternalHenshin_text.g:3561:2: ( rule__Graph__GraphElementsAssignment_3 )*
+            // InternalHenshin_text.g:3609:1: ( ( rule__Graph__GraphElementsAssignment_3 )* )
+            // InternalHenshin_text.g:3610:2: ( rule__Graph__GraphElementsAssignment_3 )*
             {
              before(grammarAccess.getGraphAccess().getGraphElementsAssignment_3()); 
-            // InternalHenshin_text.g:3562:2: ( rule__Graph__GraphElementsAssignment_3 )*
-            loop31:
+            // InternalHenshin_text.g:3611:2: ( rule__Graph__GraphElementsAssignment_3 )*
+            loop32:
             do {
-                int alt31=2;
-                int LA31_0 = input.LA(1);
+                int alt32=2;
+                int LA32_0 = input.LA(1);
 
-                if ( ((LA31_0>=13 && LA31_0<=17)||LA31_0==79||(LA31_0>=82 && LA31_0<=83)||(LA31_0>=85 && LA31_0<=86)) ) {
-                    alt31=1;
+                if ( ((LA32_0>=13 && LA32_0<=17)||LA32_0==83||(LA32_0>=86 && LA32_0<=87)||(LA32_0>=89 && LA32_0<=90)) ) {
+                    alt32=1;
                 }
 
 
-                switch (alt31) {
+                switch (alt32) {
             	case 1 :
-            	    // InternalHenshin_text.g:3562:3: rule__Graph__GraphElementsAssignment_3
+            	    // InternalHenshin_text.g:3611:3: rule__Graph__GraphElementsAssignment_3
             	    {
-            	    pushFollow(FOLLOW_24);
+            	    pushFollow(FOLLOW_25);
             	    rule__Graph__GraphElementsAssignment_3();
 
             	    state._fsp--;
@@ -11637,7 +11827,7 @@
             	    break;
 
             	default :
-            	    break loop31;
+            	    break loop32;
                 }
             } while (true);
 
@@ -11664,14 +11854,14 @@
 
 
     // $ANTLR start "rule__Graph__Group__4"
-    // InternalHenshin_text.g:3570:1: rule__Graph__Group__4 : rule__Graph__Group__4__Impl ;
+    // InternalHenshin_text.g:3619:1: rule__Graph__Group__4 : rule__Graph__Group__4__Impl ;
     public final void rule__Graph__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3574:1: ( rule__Graph__Group__4__Impl )
-            // InternalHenshin_text.g:3575:2: rule__Graph__Group__4__Impl
+            // InternalHenshin_text.g:3623:1: ( rule__Graph__Group__4__Impl )
+            // InternalHenshin_text.g:3624:2: rule__Graph__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Graph__Group__4__Impl();
@@ -11697,20 +11887,20 @@
 
 
     // $ANTLR start "rule__Graph__Group__4__Impl"
-    // InternalHenshin_text.g:3581:1: rule__Graph__Group__4__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:3630:1: rule__Graph__Group__4__Impl : ( '}' ) ;
     public final void rule__Graph__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3585:1: ( ( '}' ) )
-            // InternalHenshin_text.g:3586:1: ( '}' )
+            // InternalHenshin_text.g:3634:1: ( ( '}' ) )
+            // InternalHenshin_text.g:3635:1: ( '}' )
             {
-            // InternalHenshin_text.g:3586:1: ( '}' )
-            // InternalHenshin_text.g:3587:2: '}'
+            // InternalHenshin_text.g:3635:1: ( '}' )
+            // InternalHenshin_text.g:3636:2: '}'
             {
              before(grammarAccess.getGraphAccess().getRightCurlyBracketKeyword_4()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getGraphAccess().getRightCurlyBracketKeyword_4()); 
 
             }
@@ -11734,16 +11924,16 @@
 
 
     // $ANTLR start "rule__Edges__Group__0"
-    // InternalHenshin_text.g:3597:1: rule__Edges__Group__0 : rule__Edges__Group__0__Impl rule__Edges__Group__1 ;
+    // InternalHenshin_text.g:3646:1: rule__Edges__Group__0 : rule__Edges__Group__0__Impl rule__Edges__Group__1 ;
     public final void rule__Edges__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3601:1: ( rule__Edges__Group__0__Impl rule__Edges__Group__1 )
-            // InternalHenshin_text.g:3602:2: rule__Edges__Group__0__Impl rule__Edges__Group__1
+            // InternalHenshin_text.g:3650:1: ( rule__Edges__Group__0__Impl rule__Edges__Group__1 )
+            // InternalHenshin_text.g:3651:2: rule__Edges__Group__0__Impl rule__Edges__Group__1
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_21);
             rule__Edges__Group__0__Impl();
 
             state._fsp--;
@@ -11772,20 +11962,20 @@
 
 
     // $ANTLR start "rule__Edges__Group__0__Impl"
-    // InternalHenshin_text.g:3609:1: rule__Edges__Group__0__Impl : ( 'edges' ) ;
+    // InternalHenshin_text.g:3658:1: rule__Edges__Group__0__Impl : ( 'edges' ) ;
     public final void rule__Edges__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3613:1: ( ( 'edges' ) )
-            // InternalHenshin_text.g:3614:1: ( 'edges' )
+            // InternalHenshin_text.g:3662:1: ( ( 'edges' ) )
+            // InternalHenshin_text.g:3663:1: ( 'edges' )
             {
-            // InternalHenshin_text.g:3614:1: ( 'edges' )
-            // InternalHenshin_text.g:3615:2: 'edges'
+            // InternalHenshin_text.g:3663:1: ( 'edges' )
+            // InternalHenshin_text.g:3664:2: 'edges'
             {
              before(grammarAccess.getEdgesAccess().getEdgesKeyword_0()); 
-            match(input,79,FOLLOW_2); 
+            match(input,83,FOLLOW_2); 
              after(grammarAccess.getEdgesAccess().getEdgesKeyword_0()); 
 
             }
@@ -11809,14 +11999,14 @@
 
 
     // $ANTLR start "rule__Edges__Group__1"
-    // InternalHenshin_text.g:3624:1: rule__Edges__Group__1 : rule__Edges__Group__1__Impl rule__Edges__Group__2 ;
+    // InternalHenshin_text.g:3673:1: rule__Edges__Group__1 : rule__Edges__Group__1__Impl rule__Edges__Group__2 ;
     public final void rule__Edges__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3628:1: ( rule__Edges__Group__1__Impl rule__Edges__Group__2 )
-            // InternalHenshin_text.g:3629:2: rule__Edges__Group__1__Impl rule__Edges__Group__2
+            // InternalHenshin_text.g:3677:1: ( rule__Edges__Group__1__Impl rule__Edges__Group__2 )
+            // InternalHenshin_text.g:3678:2: rule__Edges__Group__1__Impl rule__Edges__Group__2
             {
             pushFollow(FOLLOW_10);
             rule__Edges__Group__1__Impl();
@@ -11847,20 +12037,20 @@
 
 
     // $ANTLR start "rule__Edges__Group__1__Impl"
-    // InternalHenshin_text.g:3636:1: rule__Edges__Group__1__Impl : ( '[' ) ;
+    // InternalHenshin_text.g:3685:1: rule__Edges__Group__1__Impl : ( '[' ) ;
     public final void rule__Edges__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3640:1: ( ( '[' ) )
-            // InternalHenshin_text.g:3641:1: ( '[' )
+            // InternalHenshin_text.g:3689:1: ( ( '[' ) )
+            // InternalHenshin_text.g:3690:1: ( '[' )
             {
-            // InternalHenshin_text.g:3641:1: ( '[' )
-            // InternalHenshin_text.g:3642:2: '['
+            // InternalHenshin_text.g:3690:1: ( '[' )
+            // InternalHenshin_text.g:3691:2: '['
             {
              before(grammarAccess.getEdgesAccess().getLeftSquareBracketKeyword_1()); 
-            match(input,76,FOLLOW_2); 
+            match(input,80,FOLLOW_2); 
              after(grammarAccess.getEdgesAccess().getLeftSquareBracketKeyword_1()); 
 
             }
@@ -11884,16 +12074,16 @@
 
 
     // $ANTLR start "rule__Edges__Group__2"
-    // InternalHenshin_text.g:3651:1: rule__Edges__Group__2 : rule__Edges__Group__2__Impl rule__Edges__Group__3 ;
+    // InternalHenshin_text.g:3700:1: rule__Edges__Group__2 : rule__Edges__Group__2__Impl rule__Edges__Group__3 ;
     public final void rule__Edges__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3655:1: ( rule__Edges__Group__2__Impl rule__Edges__Group__3 )
-            // InternalHenshin_text.g:3656:2: rule__Edges__Group__2__Impl rule__Edges__Group__3
+            // InternalHenshin_text.g:3704:1: ( rule__Edges__Group__2__Impl rule__Edges__Group__3 )
+            // InternalHenshin_text.g:3705:2: rule__Edges__Group__2__Impl rule__Edges__Group__3
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_23);
             rule__Edges__Group__2__Impl();
 
             state._fsp--;
@@ -11922,21 +12112,21 @@
 
 
     // $ANTLR start "rule__Edges__Group__2__Impl"
-    // InternalHenshin_text.g:3663:1: rule__Edges__Group__2__Impl : ( ( rule__Edges__EdgesAssignment_2 ) ) ;
+    // InternalHenshin_text.g:3712:1: rule__Edges__Group__2__Impl : ( ( rule__Edges__EdgesAssignment_2 ) ) ;
     public final void rule__Edges__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3667:1: ( ( ( rule__Edges__EdgesAssignment_2 ) ) )
-            // InternalHenshin_text.g:3668:1: ( ( rule__Edges__EdgesAssignment_2 ) )
+            // InternalHenshin_text.g:3716:1: ( ( ( rule__Edges__EdgesAssignment_2 ) ) )
+            // InternalHenshin_text.g:3717:1: ( ( rule__Edges__EdgesAssignment_2 ) )
             {
-            // InternalHenshin_text.g:3668:1: ( ( rule__Edges__EdgesAssignment_2 ) )
-            // InternalHenshin_text.g:3669:2: ( rule__Edges__EdgesAssignment_2 )
+            // InternalHenshin_text.g:3717:1: ( ( rule__Edges__EdgesAssignment_2 ) )
+            // InternalHenshin_text.g:3718:2: ( rule__Edges__EdgesAssignment_2 )
             {
              before(grammarAccess.getEdgesAccess().getEdgesAssignment_2()); 
-            // InternalHenshin_text.g:3670:2: ( rule__Edges__EdgesAssignment_2 )
-            // InternalHenshin_text.g:3670:3: rule__Edges__EdgesAssignment_2
+            // InternalHenshin_text.g:3719:2: ( rule__Edges__EdgesAssignment_2 )
+            // InternalHenshin_text.g:3719:3: rule__Edges__EdgesAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__Edges__EdgesAssignment_2();
@@ -11969,16 +12159,16 @@
 
 
     // $ANTLR start "rule__Edges__Group__3"
-    // InternalHenshin_text.g:3678:1: rule__Edges__Group__3 : rule__Edges__Group__3__Impl rule__Edges__Group__4 ;
+    // InternalHenshin_text.g:3727:1: rule__Edges__Group__3 : rule__Edges__Group__3__Impl rule__Edges__Group__4 ;
     public final void rule__Edges__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3682:1: ( rule__Edges__Group__3__Impl rule__Edges__Group__4 )
-            // InternalHenshin_text.g:3683:2: rule__Edges__Group__3__Impl rule__Edges__Group__4
+            // InternalHenshin_text.g:3731:1: ( rule__Edges__Group__3__Impl rule__Edges__Group__4 )
+            // InternalHenshin_text.g:3732:2: rule__Edges__Group__3__Impl rule__Edges__Group__4
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_23);
             rule__Edges__Group__3__Impl();
 
             state._fsp--;
@@ -12007,33 +12197,33 @@
 
 
     // $ANTLR start "rule__Edges__Group__3__Impl"
-    // InternalHenshin_text.g:3690:1: rule__Edges__Group__3__Impl : ( ( rule__Edges__Group_3__0 )* ) ;
+    // InternalHenshin_text.g:3739:1: rule__Edges__Group__3__Impl : ( ( rule__Edges__Group_3__0 )* ) ;
     public final void rule__Edges__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3694:1: ( ( ( rule__Edges__Group_3__0 )* ) )
-            // InternalHenshin_text.g:3695:1: ( ( rule__Edges__Group_3__0 )* )
+            // InternalHenshin_text.g:3743:1: ( ( ( rule__Edges__Group_3__0 )* ) )
+            // InternalHenshin_text.g:3744:1: ( ( rule__Edges__Group_3__0 )* )
             {
-            // InternalHenshin_text.g:3695:1: ( ( rule__Edges__Group_3__0 )* )
-            // InternalHenshin_text.g:3696:2: ( rule__Edges__Group_3__0 )*
+            // InternalHenshin_text.g:3744:1: ( ( rule__Edges__Group_3__0 )* )
+            // InternalHenshin_text.g:3745:2: ( rule__Edges__Group_3__0 )*
             {
              before(grammarAccess.getEdgesAccess().getGroup_3()); 
-            // InternalHenshin_text.g:3697:2: ( rule__Edges__Group_3__0 )*
-            loop32:
+            // InternalHenshin_text.g:3746:2: ( rule__Edges__Group_3__0 )*
+            loop33:
             do {
-                int alt32=2;
-                int LA32_0 = input.LA(1);
+                int alt33=2;
+                int LA33_0 = input.LA(1);
 
-                if ( (LA32_0==70) ) {
-                    alt32=1;
+                if ( (LA33_0==74) ) {
+                    alt33=1;
                 }
 
 
-                switch (alt32) {
+                switch (alt33) {
             	case 1 :
-            	    // InternalHenshin_text.g:3697:3: rule__Edges__Group_3__0
+            	    // InternalHenshin_text.g:3746:3: rule__Edges__Group_3__0
             	    {
             	    pushFollow(FOLLOW_17);
             	    rule__Edges__Group_3__0();
@@ -12045,7 +12235,7 @@
             	    break;
 
             	default :
-            	    break loop32;
+            	    break loop33;
                 }
             } while (true);
 
@@ -12072,14 +12262,14 @@
 
 
     // $ANTLR start "rule__Edges__Group__4"
-    // InternalHenshin_text.g:3705:1: rule__Edges__Group__4 : rule__Edges__Group__4__Impl ;
+    // InternalHenshin_text.g:3754:1: rule__Edges__Group__4 : rule__Edges__Group__4__Impl ;
     public final void rule__Edges__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3709:1: ( rule__Edges__Group__4__Impl )
-            // InternalHenshin_text.g:3710:2: rule__Edges__Group__4__Impl
+            // InternalHenshin_text.g:3758:1: ( rule__Edges__Group__4__Impl )
+            // InternalHenshin_text.g:3759:2: rule__Edges__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Edges__Group__4__Impl();
@@ -12105,20 +12295,20 @@
 
 
     // $ANTLR start "rule__Edges__Group__4__Impl"
-    // InternalHenshin_text.g:3716:1: rule__Edges__Group__4__Impl : ( ']' ) ;
+    // InternalHenshin_text.g:3765:1: rule__Edges__Group__4__Impl : ( ']' ) ;
     public final void rule__Edges__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3720:1: ( ( ']' ) )
-            // InternalHenshin_text.g:3721:1: ( ']' )
+            // InternalHenshin_text.g:3769:1: ( ( ']' ) )
+            // InternalHenshin_text.g:3770:1: ( ']' )
             {
-            // InternalHenshin_text.g:3721:1: ( ']' )
-            // InternalHenshin_text.g:3722:2: ']'
+            // InternalHenshin_text.g:3770:1: ( ']' )
+            // InternalHenshin_text.g:3771:2: ']'
             {
              before(grammarAccess.getEdgesAccess().getRightSquareBracketKeyword_4()); 
-            match(input,77,FOLLOW_2); 
+            match(input,81,FOLLOW_2); 
              after(grammarAccess.getEdgesAccess().getRightSquareBracketKeyword_4()); 
 
             }
@@ -12142,14 +12332,14 @@
 
 
     // $ANTLR start "rule__Edges__Group_3__0"
-    // InternalHenshin_text.g:3732:1: rule__Edges__Group_3__0 : rule__Edges__Group_3__0__Impl rule__Edges__Group_3__1 ;
+    // InternalHenshin_text.g:3781:1: rule__Edges__Group_3__0 : rule__Edges__Group_3__0__Impl rule__Edges__Group_3__1 ;
     public final void rule__Edges__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3736:1: ( rule__Edges__Group_3__0__Impl rule__Edges__Group_3__1 )
-            // InternalHenshin_text.g:3737:2: rule__Edges__Group_3__0__Impl rule__Edges__Group_3__1
+            // InternalHenshin_text.g:3785:1: ( rule__Edges__Group_3__0__Impl rule__Edges__Group_3__1 )
+            // InternalHenshin_text.g:3786:2: rule__Edges__Group_3__0__Impl rule__Edges__Group_3__1
             {
             pushFollow(FOLLOW_10);
             rule__Edges__Group_3__0__Impl();
@@ -12180,20 +12370,20 @@
 
 
     // $ANTLR start "rule__Edges__Group_3__0__Impl"
-    // InternalHenshin_text.g:3744:1: rule__Edges__Group_3__0__Impl : ( ',' ) ;
+    // InternalHenshin_text.g:3793:1: rule__Edges__Group_3__0__Impl : ( ',' ) ;
     public final void rule__Edges__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3748:1: ( ( ',' ) )
-            // InternalHenshin_text.g:3749:1: ( ',' )
+            // InternalHenshin_text.g:3797:1: ( ( ',' ) )
+            // InternalHenshin_text.g:3798:1: ( ',' )
             {
-            // InternalHenshin_text.g:3749:1: ( ',' )
-            // InternalHenshin_text.g:3750:2: ','
+            // InternalHenshin_text.g:3798:1: ( ',' )
+            // InternalHenshin_text.g:3799:2: ','
             {
              before(grammarAccess.getEdgesAccess().getCommaKeyword_3_0()); 
-            match(input,70,FOLLOW_2); 
+            match(input,74,FOLLOW_2); 
              after(grammarAccess.getEdgesAccess().getCommaKeyword_3_0()); 
 
             }
@@ -12217,14 +12407,14 @@
 
 
     // $ANTLR start "rule__Edges__Group_3__1"
-    // InternalHenshin_text.g:3759:1: rule__Edges__Group_3__1 : rule__Edges__Group_3__1__Impl ;
+    // InternalHenshin_text.g:3808:1: rule__Edges__Group_3__1 : rule__Edges__Group_3__1__Impl ;
     public final void rule__Edges__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3763:1: ( rule__Edges__Group_3__1__Impl )
-            // InternalHenshin_text.g:3764:2: rule__Edges__Group_3__1__Impl
+            // InternalHenshin_text.g:3812:1: ( rule__Edges__Group_3__1__Impl )
+            // InternalHenshin_text.g:3813:2: rule__Edges__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Edges__Group_3__1__Impl();
@@ -12250,21 +12440,21 @@
 
 
     // $ANTLR start "rule__Edges__Group_3__1__Impl"
-    // InternalHenshin_text.g:3770:1: rule__Edges__Group_3__1__Impl : ( ( rule__Edges__EdgesAssignment_3_1 ) ) ;
+    // InternalHenshin_text.g:3819:1: rule__Edges__Group_3__1__Impl : ( ( rule__Edges__EdgesAssignment_3_1 ) ) ;
     public final void rule__Edges__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3774:1: ( ( ( rule__Edges__EdgesAssignment_3_1 ) ) )
-            // InternalHenshin_text.g:3775:1: ( ( rule__Edges__EdgesAssignment_3_1 ) )
+            // InternalHenshin_text.g:3823:1: ( ( ( rule__Edges__EdgesAssignment_3_1 ) ) )
+            // InternalHenshin_text.g:3824:1: ( ( rule__Edges__EdgesAssignment_3_1 ) )
             {
-            // InternalHenshin_text.g:3775:1: ( ( rule__Edges__EdgesAssignment_3_1 ) )
-            // InternalHenshin_text.g:3776:2: ( rule__Edges__EdgesAssignment_3_1 )
+            // InternalHenshin_text.g:3824:1: ( ( rule__Edges__EdgesAssignment_3_1 ) )
+            // InternalHenshin_text.g:3825:2: ( rule__Edges__EdgesAssignment_3_1 )
             {
              before(grammarAccess.getEdgesAccess().getEdgesAssignment_3_1()); 
-            // InternalHenshin_text.g:3777:2: ( rule__Edges__EdgesAssignment_3_1 )
-            // InternalHenshin_text.g:3777:3: rule__Edges__EdgesAssignment_3_1
+            // InternalHenshin_text.g:3826:2: ( rule__Edges__EdgesAssignment_3_1 )
+            // InternalHenshin_text.g:3826:3: rule__Edges__EdgesAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__Edges__EdgesAssignment_3_1();
@@ -12297,16 +12487,16 @@
 
 
     // $ANTLR start "rule__Edge__Group__0"
-    // InternalHenshin_text.g:3786:1: rule__Edge__Group__0 : rule__Edge__Group__0__Impl rule__Edge__Group__1 ;
+    // InternalHenshin_text.g:3835:1: rule__Edge__Group__0 : rule__Edge__Group__0__Impl rule__Edge__Group__1 ;
     public final void rule__Edge__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3790:1: ( rule__Edge__Group__0__Impl rule__Edge__Group__1 )
-            // InternalHenshin_text.g:3791:2: rule__Edge__Group__0__Impl rule__Edge__Group__1
+            // InternalHenshin_text.g:3839:1: ( rule__Edge__Group__0__Impl rule__Edge__Group__1 )
+            // InternalHenshin_text.g:3840:2: rule__Edge__Group__0__Impl rule__Edge__Group__1
             {
-            pushFollow(FOLLOW_25);
+            pushFollow(FOLLOW_26);
             rule__Edge__Group__0__Impl();
 
             state._fsp--;
@@ -12335,20 +12525,20 @@
 
 
     // $ANTLR start "rule__Edge__Group__0__Impl"
-    // InternalHenshin_text.g:3798:1: rule__Edge__Group__0__Impl : ( '(' ) ;
+    // InternalHenshin_text.g:3847:1: rule__Edge__Group__0__Impl : ( '(' ) ;
     public final void rule__Edge__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3802:1: ( ( '(' ) )
-            // InternalHenshin_text.g:3803:1: ( '(' )
+            // InternalHenshin_text.g:3851:1: ( ( '(' ) )
+            // InternalHenshin_text.g:3852:1: ( '(' )
             {
-            // InternalHenshin_text.g:3803:1: ( '(' )
-            // InternalHenshin_text.g:3804:2: '('
+            // InternalHenshin_text.g:3852:1: ( '(' )
+            // InternalHenshin_text.g:3853:2: '('
             {
              before(grammarAccess.getEdgeAccess().getLeftParenthesisKeyword_0()); 
-            match(input,66,FOLLOW_2); 
+            match(input,70,FOLLOW_2); 
              after(grammarAccess.getEdgeAccess().getLeftParenthesisKeyword_0()); 
 
             }
@@ -12372,16 +12562,16 @@
 
 
     // $ANTLR start "rule__Edge__Group__1"
-    // InternalHenshin_text.g:3813:1: rule__Edge__Group__1 : rule__Edge__Group__1__Impl rule__Edge__Group__2 ;
+    // InternalHenshin_text.g:3862:1: rule__Edge__Group__1 : rule__Edge__Group__1__Impl rule__Edge__Group__2 ;
     public final void rule__Edge__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3817:1: ( rule__Edge__Group__1__Impl rule__Edge__Group__2 )
-            // InternalHenshin_text.g:3818:2: rule__Edge__Group__1__Impl rule__Edge__Group__2
+            // InternalHenshin_text.g:3866:1: ( rule__Edge__Group__1__Impl rule__Edge__Group__2 )
+            // InternalHenshin_text.g:3867:2: rule__Edge__Group__1__Impl rule__Edge__Group__2
             {
-            pushFollow(FOLLOW_25);
+            pushFollow(FOLLOW_26);
             rule__Edge__Group__1__Impl();
 
             state._fsp--;
@@ -12410,29 +12600,29 @@
 
 
     // $ANTLR start "rule__Edge__Group__1__Impl"
-    // InternalHenshin_text.g:3825:1: rule__Edge__Group__1__Impl : ( ( rule__Edge__ActiontypeAssignment_1 )? ) ;
+    // InternalHenshin_text.g:3874:1: rule__Edge__Group__1__Impl : ( ( rule__Edge__ActiontypeAssignment_1 )? ) ;
     public final void rule__Edge__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3829:1: ( ( ( rule__Edge__ActiontypeAssignment_1 )? ) )
-            // InternalHenshin_text.g:3830:1: ( ( rule__Edge__ActiontypeAssignment_1 )? )
+            // InternalHenshin_text.g:3878:1: ( ( ( rule__Edge__ActiontypeAssignment_1 )? ) )
+            // InternalHenshin_text.g:3879:1: ( ( rule__Edge__ActiontypeAssignment_1 )? )
             {
-            // InternalHenshin_text.g:3830:1: ( ( rule__Edge__ActiontypeAssignment_1 )? )
-            // InternalHenshin_text.g:3831:2: ( rule__Edge__ActiontypeAssignment_1 )?
+            // InternalHenshin_text.g:3879:1: ( ( rule__Edge__ActiontypeAssignment_1 )? )
+            // InternalHenshin_text.g:3880:2: ( rule__Edge__ActiontypeAssignment_1 )?
             {
              before(grammarAccess.getEdgeAccess().getActiontypeAssignment_1()); 
-            // InternalHenshin_text.g:3832:2: ( rule__Edge__ActiontypeAssignment_1 )?
-            int alt33=2;
-            int LA33_0 = input.LA(1);
+            // InternalHenshin_text.g:3881:2: ( rule__Edge__ActiontypeAssignment_1 )?
+            int alt34=2;
+            int LA34_0 = input.LA(1);
 
-            if ( ((LA33_0>=13 && LA33_0<=17)) ) {
-                alt33=1;
+            if ( ((LA34_0>=13 && LA34_0<=17)) ) {
+                alt34=1;
             }
-            switch (alt33) {
+            switch (alt34) {
                 case 1 :
-                    // InternalHenshin_text.g:3832:3: rule__Edge__ActiontypeAssignment_1
+                    // InternalHenshin_text.g:3881:3: rule__Edge__ActiontypeAssignment_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__Edge__ActiontypeAssignment_1();
@@ -12468,16 +12658,16 @@
 
 
     // $ANTLR start "rule__Edge__Group__2"
-    // InternalHenshin_text.g:3840:1: rule__Edge__Group__2 : rule__Edge__Group__2__Impl rule__Edge__Group__3 ;
+    // InternalHenshin_text.g:3889:1: rule__Edge__Group__2 : rule__Edge__Group__2__Impl rule__Edge__Group__3 ;
     public final void rule__Edge__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3844:1: ( rule__Edge__Group__2__Impl rule__Edge__Group__3 )
-            // InternalHenshin_text.g:3845:2: rule__Edge__Group__2__Impl rule__Edge__Group__3
+            // InternalHenshin_text.g:3893:1: ( rule__Edge__Group__2__Impl rule__Edge__Group__3 )
+            // InternalHenshin_text.g:3894:2: rule__Edge__Group__2__Impl rule__Edge__Group__3
             {
-            pushFollow(FOLLOW_26);
+            pushFollow(FOLLOW_27);
             rule__Edge__Group__2__Impl();
 
             state._fsp--;
@@ -12506,21 +12696,21 @@
 
 
     // $ANTLR start "rule__Edge__Group__2__Impl"
-    // InternalHenshin_text.g:3852:1: rule__Edge__Group__2__Impl : ( ( rule__Edge__SourceAssignment_2 ) ) ;
+    // InternalHenshin_text.g:3901:1: rule__Edge__Group__2__Impl : ( ( rule__Edge__SourceAssignment_2 ) ) ;
     public final void rule__Edge__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3856:1: ( ( ( rule__Edge__SourceAssignment_2 ) ) )
-            // InternalHenshin_text.g:3857:1: ( ( rule__Edge__SourceAssignment_2 ) )
+            // InternalHenshin_text.g:3905:1: ( ( ( rule__Edge__SourceAssignment_2 ) ) )
+            // InternalHenshin_text.g:3906:1: ( ( rule__Edge__SourceAssignment_2 ) )
             {
-            // InternalHenshin_text.g:3857:1: ( ( rule__Edge__SourceAssignment_2 ) )
-            // InternalHenshin_text.g:3858:2: ( rule__Edge__SourceAssignment_2 )
+            // InternalHenshin_text.g:3906:1: ( ( rule__Edge__SourceAssignment_2 ) )
+            // InternalHenshin_text.g:3907:2: ( rule__Edge__SourceAssignment_2 )
             {
              before(grammarAccess.getEdgeAccess().getSourceAssignment_2()); 
-            // InternalHenshin_text.g:3859:2: ( rule__Edge__SourceAssignment_2 )
-            // InternalHenshin_text.g:3859:3: rule__Edge__SourceAssignment_2
+            // InternalHenshin_text.g:3908:2: ( rule__Edge__SourceAssignment_2 )
+            // InternalHenshin_text.g:3908:3: rule__Edge__SourceAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__Edge__SourceAssignment_2();
@@ -12553,14 +12743,14 @@
 
 
     // $ANTLR start "rule__Edge__Group__3"
-    // InternalHenshin_text.g:3867:1: rule__Edge__Group__3 : rule__Edge__Group__3__Impl rule__Edge__Group__4 ;
+    // InternalHenshin_text.g:3916:1: rule__Edge__Group__3 : rule__Edge__Group__3__Impl rule__Edge__Group__4 ;
     public final void rule__Edge__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3871:1: ( rule__Edge__Group__3__Impl rule__Edge__Group__4 )
-            // InternalHenshin_text.g:3872:2: rule__Edge__Group__3__Impl rule__Edge__Group__4
+            // InternalHenshin_text.g:3920:1: ( rule__Edge__Group__3__Impl rule__Edge__Group__4 )
+            // InternalHenshin_text.g:3921:2: rule__Edge__Group__3__Impl rule__Edge__Group__4
             {
             pushFollow(FOLLOW_7);
             rule__Edge__Group__3__Impl();
@@ -12591,20 +12781,20 @@
 
 
     // $ANTLR start "rule__Edge__Group__3__Impl"
-    // InternalHenshin_text.g:3879:1: rule__Edge__Group__3__Impl : ( '->' ) ;
+    // InternalHenshin_text.g:3928:1: rule__Edge__Group__3__Impl : ( '->' ) ;
     public final void rule__Edge__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3883:1: ( ( '->' ) )
-            // InternalHenshin_text.g:3884:1: ( '->' )
+            // InternalHenshin_text.g:3932:1: ( ( '->' ) )
+            // InternalHenshin_text.g:3933:1: ( '->' )
             {
-            // InternalHenshin_text.g:3884:1: ( '->' )
-            // InternalHenshin_text.g:3885:2: '->'
+            // InternalHenshin_text.g:3933:1: ( '->' )
+            // InternalHenshin_text.g:3934:2: '->'
             {
              before(grammarAccess.getEdgeAccess().getHyphenMinusGreaterThanSignKeyword_3()); 
-            match(input,80,FOLLOW_2); 
+            match(input,84,FOLLOW_2); 
              after(grammarAccess.getEdgeAccess().getHyphenMinusGreaterThanSignKeyword_3()); 
 
             }
@@ -12628,16 +12818,16 @@
 
 
     // $ANTLR start "rule__Edge__Group__4"
-    // InternalHenshin_text.g:3894:1: rule__Edge__Group__4 : rule__Edge__Group__4__Impl rule__Edge__Group__5 ;
+    // InternalHenshin_text.g:3943:1: rule__Edge__Group__4 : rule__Edge__Group__4__Impl rule__Edge__Group__5 ;
     public final void rule__Edge__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3898:1: ( rule__Edge__Group__4__Impl rule__Edge__Group__5 )
-            // InternalHenshin_text.g:3899:2: rule__Edge__Group__4__Impl rule__Edge__Group__5
+            // InternalHenshin_text.g:3947:1: ( rule__Edge__Group__4__Impl rule__Edge__Group__5 )
+            // InternalHenshin_text.g:3948:2: rule__Edge__Group__4__Impl rule__Edge__Group__5
             {
-            pushFollow(FOLLOW_27);
+            pushFollow(FOLLOW_28);
             rule__Edge__Group__4__Impl();
 
             state._fsp--;
@@ -12666,21 +12856,21 @@
 
 
     // $ANTLR start "rule__Edge__Group__4__Impl"
-    // InternalHenshin_text.g:3906:1: rule__Edge__Group__4__Impl : ( ( rule__Edge__TargetAssignment_4 ) ) ;
+    // InternalHenshin_text.g:3955:1: rule__Edge__Group__4__Impl : ( ( rule__Edge__TargetAssignment_4 ) ) ;
     public final void rule__Edge__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3910:1: ( ( ( rule__Edge__TargetAssignment_4 ) ) )
-            // InternalHenshin_text.g:3911:1: ( ( rule__Edge__TargetAssignment_4 ) )
+            // InternalHenshin_text.g:3959:1: ( ( ( rule__Edge__TargetAssignment_4 ) ) )
+            // InternalHenshin_text.g:3960:1: ( ( rule__Edge__TargetAssignment_4 ) )
             {
-            // InternalHenshin_text.g:3911:1: ( ( rule__Edge__TargetAssignment_4 ) )
-            // InternalHenshin_text.g:3912:2: ( rule__Edge__TargetAssignment_4 )
+            // InternalHenshin_text.g:3960:1: ( ( rule__Edge__TargetAssignment_4 ) )
+            // InternalHenshin_text.g:3961:2: ( rule__Edge__TargetAssignment_4 )
             {
              before(grammarAccess.getEdgeAccess().getTargetAssignment_4()); 
-            // InternalHenshin_text.g:3913:2: ( rule__Edge__TargetAssignment_4 )
-            // InternalHenshin_text.g:3913:3: rule__Edge__TargetAssignment_4
+            // InternalHenshin_text.g:3962:2: ( rule__Edge__TargetAssignment_4 )
+            // InternalHenshin_text.g:3962:3: rule__Edge__TargetAssignment_4
             {
             pushFollow(FOLLOW_2);
             rule__Edge__TargetAssignment_4();
@@ -12713,14 +12903,14 @@
 
 
     // $ANTLR start "rule__Edge__Group__5"
-    // InternalHenshin_text.g:3921:1: rule__Edge__Group__5 : rule__Edge__Group__5__Impl rule__Edge__Group__6 ;
+    // InternalHenshin_text.g:3970:1: rule__Edge__Group__5 : rule__Edge__Group__5__Impl rule__Edge__Group__6 ;
     public final void rule__Edge__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3925:1: ( rule__Edge__Group__5__Impl rule__Edge__Group__6 )
-            // InternalHenshin_text.g:3926:2: rule__Edge__Group__5__Impl rule__Edge__Group__6
+            // InternalHenshin_text.g:3974:1: ( rule__Edge__Group__5__Impl rule__Edge__Group__6 )
+            // InternalHenshin_text.g:3975:2: rule__Edge__Group__5__Impl rule__Edge__Group__6
             {
             pushFollow(FOLLOW_7);
             rule__Edge__Group__5__Impl();
@@ -12751,20 +12941,20 @@
 
 
     // $ANTLR start "rule__Edge__Group__5__Impl"
-    // InternalHenshin_text.g:3933:1: rule__Edge__Group__5__Impl : ( ':' ) ;
+    // InternalHenshin_text.g:3982:1: rule__Edge__Group__5__Impl : ( ':' ) ;
     public final void rule__Edge__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3937:1: ( ( ':' ) )
-            // InternalHenshin_text.g:3938:1: ( ':' )
+            // InternalHenshin_text.g:3986:1: ( ( ':' ) )
+            // InternalHenshin_text.g:3987:1: ( ':' )
             {
-            // InternalHenshin_text.g:3938:1: ( ':' )
-            // InternalHenshin_text.g:3939:2: ':'
+            // InternalHenshin_text.g:3987:1: ( ':' )
+            // InternalHenshin_text.g:3988:2: ':'
             {
              before(grammarAccess.getEdgeAccess().getColonKeyword_5()); 
-            match(input,81,FOLLOW_2); 
+            match(input,85,FOLLOW_2); 
              after(grammarAccess.getEdgeAccess().getColonKeyword_5()); 
 
             }
@@ -12788,16 +12978,16 @@
 
 
     // $ANTLR start "rule__Edge__Group__6"
-    // InternalHenshin_text.g:3948:1: rule__Edge__Group__6 : rule__Edge__Group__6__Impl rule__Edge__Group__7 ;
+    // InternalHenshin_text.g:3997:1: rule__Edge__Group__6 : rule__Edge__Group__6__Impl rule__Edge__Group__7 ;
     public final void rule__Edge__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3952:1: ( rule__Edge__Group__6__Impl rule__Edge__Group__7 )
-            // InternalHenshin_text.g:3953:2: rule__Edge__Group__6__Impl rule__Edge__Group__7
+            // InternalHenshin_text.g:4001:1: ( rule__Edge__Group__6__Impl rule__Edge__Group__7 )
+            // InternalHenshin_text.g:4002:2: rule__Edge__Group__6__Impl rule__Edge__Group__7
             {
-            pushFollow(FOLLOW_28);
+            pushFollow(FOLLOW_29);
             rule__Edge__Group__6__Impl();
 
             state._fsp--;
@@ -12826,21 +13016,21 @@
 
 
     // $ANTLR start "rule__Edge__Group__6__Impl"
-    // InternalHenshin_text.g:3960:1: rule__Edge__Group__6__Impl : ( ( rule__Edge__TypeAssignment_6 ) ) ;
+    // InternalHenshin_text.g:4009:1: rule__Edge__Group__6__Impl : ( ( rule__Edge__TypeAssignment_6 ) ) ;
     public final void rule__Edge__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3964:1: ( ( ( rule__Edge__TypeAssignment_6 ) ) )
-            // InternalHenshin_text.g:3965:1: ( ( rule__Edge__TypeAssignment_6 ) )
+            // InternalHenshin_text.g:4013:1: ( ( ( rule__Edge__TypeAssignment_6 ) ) )
+            // InternalHenshin_text.g:4014:1: ( ( rule__Edge__TypeAssignment_6 ) )
             {
-            // InternalHenshin_text.g:3965:1: ( ( rule__Edge__TypeAssignment_6 ) )
-            // InternalHenshin_text.g:3966:2: ( rule__Edge__TypeAssignment_6 )
+            // InternalHenshin_text.g:4014:1: ( ( rule__Edge__TypeAssignment_6 ) )
+            // InternalHenshin_text.g:4015:2: ( rule__Edge__TypeAssignment_6 )
             {
              before(grammarAccess.getEdgeAccess().getTypeAssignment_6()); 
-            // InternalHenshin_text.g:3967:2: ( rule__Edge__TypeAssignment_6 )
-            // InternalHenshin_text.g:3967:3: rule__Edge__TypeAssignment_6
+            // InternalHenshin_text.g:4016:2: ( rule__Edge__TypeAssignment_6 )
+            // InternalHenshin_text.g:4016:3: rule__Edge__TypeAssignment_6
             {
             pushFollow(FOLLOW_2);
             rule__Edge__TypeAssignment_6();
@@ -12873,14 +13063,14 @@
 
 
     // $ANTLR start "rule__Edge__Group__7"
-    // InternalHenshin_text.g:3975:1: rule__Edge__Group__7 : rule__Edge__Group__7__Impl ;
+    // InternalHenshin_text.g:4024:1: rule__Edge__Group__7 : rule__Edge__Group__7__Impl ;
     public final void rule__Edge__Group__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3979:1: ( rule__Edge__Group__7__Impl )
-            // InternalHenshin_text.g:3980:2: rule__Edge__Group__7__Impl
+            // InternalHenshin_text.g:4028:1: ( rule__Edge__Group__7__Impl )
+            // InternalHenshin_text.g:4029:2: rule__Edge__Group__7__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Edge__Group__7__Impl();
@@ -12906,20 +13096,20 @@
 
 
     // $ANTLR start "rule__Edge__Group__7__Impl"
-    // InternalHenshin_text.g:3986:1: rule__Edge__Group__7__Impl : ( ')' ) ;
+    // InternalHenshin_text.g:4035:1: rule__Edge__Group__7__Impl : ( ')' ) ;
     public final void rule__Edge__Group__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:3990:1: ( ( ')' ) )
-            // InternalHenshin_text.g:3991:1: ( ')' )
+            // InternalHenshin_text.g:4039:1: ( ( ')' ) )
+            // InternalHenshin_text.g:4040:1: ( ')' )
             {
-            // InternalHenshin_text.g:3991:1: ( ')' )
-            // InternalHenshin_text.g:3992:2: ')'
+            // InternalHenshin_text.g:4040:1: ( ')' )
+            // InternalHenshin_text.g:4041:2: ')'
             {
              before(grammarAccess.getEdgeAccess().getRightParenthesisKeyword_7()); 
-            match(input,67,FOLLOW_2); 
+            match(input,71,FOLLOW_2); 
              after(grammarAccess.getEdgeAccess().getRightParenthesisKeyword_7()); 
 
             }
@@ -12943,16 +13133,16 @@
 
 
     // $ANTLR start "rule__Node__Group__0"
-    // InternalHenshin_text.g:4002:1: rule__Node__Group__0 : rule__Node__Group__0__Impl rule__Node__Group__1 ;
+    // InternalHenshin_text.g:4051:1: rule__Node__Group__0 : rule__Node__Group__0__Impl rule__Node__Group__1 ;
     public final void rule__Node__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4006:1: ( rule__Node__Group__0__Impl rule__Node__Group__1 )
-            // InternalHenshin_text.g:4007:2: rule__Node__Group__0__Impl rule__Node__Group__1
+            // InternalHenshin_text.g:4055:1: ( rule__Node__Group__0__Impl rule__Node__Group__1 )
+            // InternalHenshin_text.g:4056:2: rule__Node__Group__0__Impl rule__Node__Group__1
             {
-            pushFollow(FOLLOW_29);
+            pushFollow(FOLLOW_30);
             rule__Node__Group__0__Impl();
 
             state._fsp--;
@@ -12981,29 +13171,29 @@
 
 
     // $ANTLR start "rule__Node__Group__0__Impl"
-    // InternalHenshin_text.g:4014:1: rule__Node__Group__0__Impl : ( ( rule__Node__ActiontypeAssignment_0 )? ) ;
+    // InternalHenshin_text.g:4063:1: rule__Node__Group__0__Impl : ( ( rule__Node__ActiontypeAssignment_0 )? ) ;
     public final void rule__Node__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4018:1: ( ( ( rule__Node__ActiontypeAssignment_0 )? ) )
-            // InternalHenshin_text.g:4019:1: ( ( rule__Node__ActiontypeAssignment_0 )? )
+            // InternalHenshin_text.g:4067:1: ( ( ( rule__Node__ActiontypeAssignment_0 )? ) )
+            // InternalHenshin_text.g:4068:1: ( ( rule__Node__ActiontypeAssignment_0 )? )
             {
-            // InternalHenshin_text.g:4019:1: ( ( rule__Node__ActiontypeAssignment_0 )? )
-            // InternalHenshin_text.g:4020:2: ( rule__Node__ActiontypeAssignment_0 )?
+            // InternalHenshin_text.g:4068:1: ( ( rule__Node__ActiontypeAssignment_0 )? )
+            // InternalHenshin_text.g:4069:2: ( rule__Node__ActiontypeAssignment_0 )?
             {
              before(grammarAccess.getNodeAccess().getActiontypeAssignment_0()); 
-            // InternalHenshin_text.g:4021:2: ( rule__Node__ActiontypeAssignment_0 )?
-            int alt34=2;
-            int LA34_0 = input.LA(1);
+            // InternalHenshin_text.g:4070:2: ( rule__Node__ActiontypeAssignment_0 )?
+            int alt35=2;
+            int LA35_0 = input.LA(1);
 
-            if ( ((LA34_0>=13 && LA34_0<=17)) ) {
-                alt34=1;
+            if ( ((LA35_0>=13 && LA35_0<=17)) ) {
+                alt35=1;
             }
-            switch (alt34) {
+            switch (alt35) {
                 case 1 :
-                    // InternalHenshin_text.g:4021:3: rule__Node__ActiontypeAssignment_0
+                    // InternalHenshin_text.g:4070:3: rule__Node__ActiontypeAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Node__ActiontypeAssignment_0();
@@ -13039,14 +13229,14 @@
 
 
     // $ANTLR start "rule__Node__Group__1"
-    // InternalHenshin_text.g:4029:1: rule__Node__Group__1 : rule__Node__Group__1__Impl rule__Node__Group__2 ;
+    // InternalHenshin_text.g:4078:1: rule__Node__Group__1 : rule__Node__Group__1__Impl rule__Node__Group__2 ;
     public final void rule__Node__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4033:1: ( rule__Node__Group__1__Impl rule__Node__Group__2 )
-            // InternalHenshin_text.g:4034:2: rule__Node__Group__1__Impl rule__Node__Group__2
+            // InternalHenshin_text.g:4082:1: ( rule__Node__Group__1__Impl rule__Node__Group__2 )
+            // InternalHenshin_text.g:4083:2: rule__Node__Group__1__Impl rule__Node__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__Node__Group__1__Impl();
@@ -13077,20 +13267,20 @@
 
 
     // $ANTLR start "rule__Node__Group__1__Impl"
-    // InternalHenshin_text.g:4041:1: rule__Node__Group__1__Impl : ( 'node' ) ;
+    // InternalHenshin_text.g:4090:1: rule__Node__Group__1__Impl : ( 'node' ) ;
     public final void rule__Node__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4045:1: ( ( 'node' ) )
-            // InternalHenshin_text.g:4046:1: ( 'node' )
+            // InternalHenshin_text.g:4094:1: ( ( 'node' ) )
+            // InternalHenshin_text.g:4095:1: ( 'node' )
             {
-            // InternalHenshin_text.g:4046:1: ( 'node' )
-            // InternalHenshin_text.g:4047:2: 'node'
+            // InternalHenshin_text.g:4095:1: ( 'node' )
+            // InternalHenshin_text.g:4096:2: 'node'
             {
              before(grammarAccess.getNodeAccess().getNodeKeyword_1()); 
-            match(input,82,FOLLOW_2); 
+            match(input,86,FOLLOW_2); 
              after(grammarAccess.getNodeAccess().getNodeKeyword_1()); 
 
             }
@@ -13114,16 +13304,16 @@
 
 
     // $ANTLR start "rule__Node__Group__2"
-    // InternalHenshin_text.g:4056:1: rule__Node__Group__2 : rule__Node__Group__2__Impl rule__Node__Group__3 ;
+    // InternalHenshin_text.g:4105:1: rule__Node__Group__2 : rule__Node__Group__2__Impl rule__Node__Group__3 ;
     public final void rule__Node__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4060:1: ( rule__Node__Group__2__Impl rule__Node__Group__3 )
-            // InternalHenshin_text.g:4061:2: rule__Node__Group__2__Impl rule__Node__Group__3
+            // InternalHenshin_text.g:4109:1: ( rule__Node__Group__2__Impl rule__Node__Group__3 )
+            // InternalHenshin_text.g:4110:2: rule__Node__Group__2__Impl rule__Node__Group__3
             {
-            pushFollow(FOLLOW_27);
+            pushFollow(FOLLOW_28);
             rule__Node__Group__2__Impl();
 
             state._fsp--;
@@ -13152,21 +13342,21 @@
 
 
     // $ANTLR start "rule__Node__Group__2__Impl"
-    // InternalHenshin_text.g:4068:1: rule__Node__Group__2__Impl : ( ( rule__Node__NameAssignment_2 ) ) ;
+    // InternalHenshin_text.g:4117:1: rule__Node__Group__2__Impl : ( ( rule__Node__NameAssignment_2 ) ) ;
     public final void rule__Node__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4072:1: ( ( ( rule__Node__NameAssignment_2 ) ) )
-            // InternalHenshin_text.g:4073:1: ( ( rule__Node__NameAssignment_2 ) )
+            // InternalHenshin_text.g:4121:1: ( ( ( rule__Node__NameAssignment_2 ) ) )
+            // InternalHenshin_text.g:4122:1: ( ( rule__Node__NameAssignment_2 ) )
             {
-            // InternalHenshin_text.g:4073:1: ( ( rule__Node__NameAssignment_2 ) )
-            // InternalHenshin_text.g:4074:2: ( rule__Node__NameAssignment_2 )
+            // InternalHenshin_text.g:4122:1: ( ( rule__Node__NameAssignment_2 ) )
+            // InternalHenshin_text.g:4123:2: ( rule__Node__NameAssignment_2 )
             {
              before(grammarAccess.getNodeAccess().getNameAssignment_2()); 
-            // InternalHenshin_text.g:4075:2: ( rule__Node__NameAssignment_2 )
-            // InternalHenshin_text.g:4075:3: rule__Node__NameAssignment_2
+            // InternalHenshin_text.g:4124:2: ( rule__Node__NameAssignment_2 )
+            // InternalHenshin_text.g:4124:3: rule__Node__NameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__Node__NameAssignment_2();
@@ -13199,14 +13389,14 @@
 
 
     // $ANTLR start "rule__Node__Group__3"
-    // InternalHenshin_text.g:4083:1: rule__Node__Group__3 : rule__Node__Group__3__Impl rule__Node__Group__4 ;
+    // InternalHenshin_text.g:4132:1: rule__Node__Group__3 : rule__Node__Group__3__Impl rule__Node__Group__4 ;
     public final void rule__Node__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4087:1: ( rule__Node__Group__3__Impl rule__Node__Group__4 )
-            // InternalHenshin_text.g:4088:2: rule__Node__Group__3__Impl rule__Node__Group__4
+            // InternalHenshin_text.g:4136:1: ( rule__Node__Group__3__Impl rule__Node__Group__4 )
+            // InternalHenshin_text.g:4137:2: rule__Node__Group__3__Impl rule__Node__Group__4
             {
             pushFollow(FOLLOW_7);
             rule__Node__Group__3__Impl();
@@ -13237,20 +13427,20 @@
 
 
     // $ANTLR start "rule__Node__Group__3__Impl"
-    // InternalHenshin_text.g:4095:1: rule__Node__Group__3__Impl : ( ':' ) ;
+    // InternalHenshin_text.g:4144:1: rule__Node__Group__3__Impl : ( ':' ) ;
     public final void rule__Node__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4099:1: ( ( ':' ) )
-            // InternalHenshin_text.g:4100:1: ( ':' )
+            // InternalHenshin_text.g:4148:1: ( ( ':' ) )
+            // InternalHenshin_text.g:4149:1: ( ':' )
             {
-            // InternalHenshin_text.g:4100:1: ( ':' )
-            // InternalHenshin_text.g:4101:2: ':'
+            // InternalHenshin_text.g:4149:1: ( ':' )
+            // InternalHenshin_text.g:4150:2: ':'
             {
              before(grammarAccess.getNodeAccess().getColonKeyword_3()); 
-            match(input,81,FOLLOW_2); 
+            match(input,85,FOLLOW_2); 
              after(grammarAccess.getNodeAccess().getColonKeyword_3()); 
 
             }
@@ -13274,14 +13464,14 @@
 
 
     // $ANTLR start "rule__Node__Group__4"
-    // InternalHenshin_text.g:4110:1: rule__Node__Group__4 : rule__Node__Group__4__Impl rule__Node__Group__5 ;
+    // InternalHenshin_text.g:4159:1: rule__Node__Group__4 : rule__Node__Group__4__Impl rule__Node__Group__5 ;
     public final void rule__Node__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4114:1: ( rule__Node__Group__4__Impl rule__Node__Group__5 )
-            // InternalHenshin_text.g:4115:2: rule__Node__Group__4__Impl rule__Node__Group__5
+            // InternalHenshin_text.g:4163:1: ( rule__Node__Group__4__Impl rule__Node__Group__5 )
+            // InternalHenshin_text.g:4164:2: rule__Node__Group__4__Impl rule__Node__Group__5
             {
             pushFollow(FOLLOW_12);
             rule__Node__Group__4__Impl();
@@ -13312,21 +13502,21 @@
 
 
     // $ANTLR start "rule__Node__Group__4__Impl"
-    // InternalHenshin_text.g:4122:1: rule__Node__Group__4__Impl : ( ( rule__Node__NodetypeAssignment_4 ) ) ;
+    // InternalHenshin_text.g:4171:1: rule__Node__Group__4__Impl : ( ( rule__Node__NodetypeAssignment_4 ) ) ;
     public final void rule__Node__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4126:1: ( ( ( rule__Node__NodetypeAssignment_4 ) ) )
-            // InternalHenshin_text.g:4127:1: ( ( rule__Node__NodetypeAssignment_4 ) )
+            // InternalHenshin_text.g:4175:1: ( ( ( rule__Node__NodetypeAssignment_4 ) ) )
+            // InternalHenshin_text.g:4176:1: ( ( rule__Node__NodetypeAssignment_4 ) )
             {
-            // InternalHenshin_text.g:4127:1: ( ( rule__Node__NodetypeAssignment_4 ) )
-            // InternalHenshin_text.g:4128:2: ( rule__Node__NodetypeAssignment_4 )
+            // InternalHenshin_text.g:4176:1: ( ( rule__Node__NodetypeAssignment_4 ) )
+            // InternalHenshin_text.g:4177:2: ( rule__Node__NodetypeAssignment_4 )
             {
              before(grammarAccess.getNodeAccess().getNodetypeAssignment_4()); 
-            // InternalHenshin_text.g:4129:2: ( rule__Node__NodetypeAssignment_4 )
-            // InternalHenshin_text.g:4129:3: rule__Node__NodetypeAssignment_4
+            // InternalHenshin_text.g:4178:2: ( rule__Node__NodetypeAssignment_4 )
+            // InternalHenshin_text.g:4178:3: rule__Node__NodetypeAssignment_4
             {
             pushFollow(FOLLOW_2);
             rule__Node__NodetypeAssignment_4();
@@ -13359,14 +13549,14 @@
 
 
     // $ANTLR start "rule__Node__Group__5"
-    // InternalHenshin_text.g:4137:1: rule__Node__Group__5 : rule__Node__Group__5__Impl ;
+    // InternalHenshin_text.g:4186:1: rule__Node__Group__5 : rule__Node__Group__5__Impl ;
     public final void rule__Node__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4141:1: ( rule__Node__Group__5__Impl )
-            // InternalHenshin_text.g:4142:2: rule__Node__Group__5__Impl
+            // InternalHenshin_text.g:4190:1: ( rule__Node__Group__5__Impl )
+            // InternalHenshin_text.g:4191:2: rule__Node__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Node__Group__5__Impl();
@@ -13392,29 +13582,29 @@
 
 
     // $ANTLR start "rule__Node__Group__5__Impl"
-    // InternalHenshin_text.g:4148:1: rule__Node__Group__5__Impl : ( ( rule__Node__Group_5__0 )? ) ;
+    // InternalHenshin_text.g:4197:1: rule__Node__Group__5__Impl : ( ( rule__Node__Group_5__0 )? ) ;
     public final void rule__Node__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4152:1: ( ( ( rule__Node__Group_5__0 )? ) )
-            // InternalHenshin_text.g:4153:1: ( ( rule__Node__Group_5__0 )? )
+            // InternalHenshin_text.g:4201:1: ( ( ( rule__Node__Group_5__0 )? ) )
+            // InternalHenshin_text.g:4202:1: ( ( rule__Node__Group_5__0 )? )
             {
-            // InternalHenshin_text.g:4153:1: ( ( rule__Node__Group_5__0 )? )
-            // InternalHenshin_text.g:4154:2: ( rule__Node__Group_5__0 )?
+            // InternalHenshin_text.g:4202:1: ( ( rule__Node__Group_5__0 )? )
+            // InternalHenshin_text.g:4203:2: ( rule__Node__Group_5__0 )?
             {
              before(grammarAccess.getNodeAccess().getGroup_5()); 
-            // InternalHenshin_text.g:4155:2: ( rule__Node__Group_5__0 )?
-            int alt35=2;
-            int LA35_0 = input.LA(1);
+            // InternalHenshin_text.g:4204:2: ( rule__Node__Group_5__0 )?
+            int alt36=2;
+            int LA36_0 = input.LA(1);
 
-            if ( (LA35_0==68) ) {
-                alt35=1;
+            if ( (LA36_0==72) ) {
+                alt36=1;
             }
-            switch (alt35) {
+            switch (alt36) {
                 case 1 :
-                    // InternalHenshin_text.g:4155:3: rule__Node__Group_5__0
+                    // InternalHenshin_text.g:4204:3: rule__Node__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Node__Group_5__0();
@@ -13450,16 +13640,16 @@
 
 
     // $ANTLR start "rule__Node__Group_5__0"
-    // InternalHenshin_text.g:4164:1: rule__Node__Group_5__0 : rule__Node__Group_5__0__Impl rule__Node__Group_5__1 ;
+    // InternalHenshin_text.g:4213:1: rule__Node__Group_5__0 : rule__Node__Group_5__0__Impl rule__Node__Group_5__1 ;
     public final void rule__Node__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4168:1: ( rule__Node__Group_5__0__Impl rule__Node__Group_5__1 )
-            // InternalHenshin_text.g:4169:2: rule__Node__Group_5__0__Impl rule__Node__Group_5__1
+            // InternalHenshin_text.g:4217:1: ( rule__Node__Group_5__0__Impl rule__Node__Group_5__1 )
+            // InternalHenshin_text.g:4218:2: rule__Node__Group_5__0__Impl rule__Node__Group_5__1
             {
-            pushFollow(FOLLOW_30);
+            pushFollow(FOLLOW_31);
             rule__Node__Group_5__0__Impl();
 
             state._fsp--;
@@ -13488,20 +13678,20 @@
 
 
     // $ANTLR start "rule__Node__Group_5__0__Impl"
-    // InternalHenshin_text.g:4176:1: rule__Node__Group_5__0__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:4225:1: rule__Node__Group_5__0__Impl : ( '{' ) ;
     public final void rule__Node__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4180:1: ( ( '{' ) )
-            // InternalHenshin_text.g:4181:1: ( '{' )
+            // InternalHenshin_text.g:4229:1: ( ( '{' ) )
+            // InternalHenshin_text.g:4230:1: ( '{' )
             {
-            // InternalHenshin_text.g:4181:1: ( '{' )
-            // InternalHenshin_text.g:4182:2: '{'
+            // InternalHenshin_text.g:4230:1: ( '{' )
+            // InternalHenshin_text.g:4231:2: '{'
             {
              before(grammarAccess.getNodeAccess().getLeftCurlyBracketKeyword_5_0()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getNodeAccess().getLeftCurlyBracketKeyword_5_0()); 
 
             }
@@ -13525,16 +13715,16 @@
 
 
     // $ANTLR start "rule__Node__Group_5__1"
-    // InternalHenshin_text.g:4191:1: rule__Node__Group_5__1 : rule__Node__Group_5__1__Impl rule__Node__Group_5__2 ;
+    // InternalHenshin_text.g:4240:1: rule__Node__Group_5__1 : rule__Node__Group_5__1__Impl rule__Node__Group_5__2 ;
     public final void rule__Node__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4195:1: ( rule__Node__Group_5__1__Impl rule__Node__Group_5__2 )
-            // InternalHenshin_text.g:4196:2: rule__Node__Group_5__1__Impl rule__Node__Group_5__2
+            // InternalHenshin_text.g:4244:1: ( rule__Node__Group_5__1__Impl rule__Node__Group_5__2 )
+            // InternalHenshin_text.g:4245:2: rule__Node__Group_5__1__Impl rule__Node__Group_5__2
             {
-            pushFollow(FOLLOW_30);
+            pushFollow(FOLLOW_31);
             rule__Node__Group_5__1__Impl();
 
             state._fsp--;
@@ -13563,35 +13753,35 @@
 
 
     // $ANTLR start "rule__Node__Group_5__1__Impl"
-    // InternalHenshin_text.g:4203:1: rule__Node__Group_5__1__Impl : ( ( rule__Node__AttributeAssignment_5_1 )* ) ;
+    // InternalHenshin_text.g:4252:1: rule__Node__Group_5__1__Impl : ( ( rule__Node__AttributeAssignment_5_1 )* ) ;
     public final void rule__Node__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4207:1: ( ( ( rule__Node__AttributeAssignment_5_1 )* ) )
-            // InternalHenshin_text.g:4208:1: ( ( rule__Node__AttributeAssignment_5_1 )* )
+            // InternalHenshin_text.g:4256:1: ( ( ( rule__Node__AttributeAssignment_5_1 )* ) )
+            // InternalHenshin_text.g:4257:1: ( ( rule__Node__AttributeAssignment_5_1 )* )
             {
-            // InternalHenshin_text.g:4208:1: ( ( rule__Node__AttributeAssignment_5_1 )* )
-            // InternalHenshin_text.g:4209:2: ( rule__Node__AttributeAssignment_5_1 )*
+            // InternalHenshin_text.g:4257:1: ( ( rule__Node__AttributeAssignment_5_1 )* )
+            // InternalHenshin_text.g:4258:2: ( rule__Node__AttributeAssignment_5_1 )*
             {
              before(grammarAccess.getNodeAccess().getAttributeAssignment_5_1()); 
-            // InternalHenshin_text.g:4210:2: ( rule__Node__AttributeAssignment_5_1 )*
-            loop36:
+            // InternalHenshin_text.g:4259:2: ( rule__Node__AttributeAssignment_5_1 )*
+            loop37:
             do {
-                int alt36=2;
-                int LA36_0 = input.LA(1);
+                int alt37=2;
+                int LA37_0 = input.LA(1);
 
-                if ( (LA36_0==RULE_ID||(LA36_0>=13 && LA36_0<=17)||LA36_0==102) ) {
-                    alt36=1;
+                if ( (LA37_0==RULE_ID||(LA37_0>=13 && LA37_0<=17)||LA37_0==106) ) {
+                    alt37=1;
                 }
 
 
-                switch (alt36) {
+                switch (alt37) {
             	case 1 :
-            	    // InternalHenshin_text.g:4210:3: rule__Node__AttributeAssignment_5_1
+            	    // InternalHenshin_text.g:4259:3: rule__Node__AttributeAssignment_5_1
             	    {
-            	    pushFollow(FOLLOW_31);
+            	    pushFollow(FOLLOW_32);
             	    rule__Node__AttributeAssignment_5_1();
 
             	    state._fsp--;
@@ -13601,7 +13791,7 @@
             	    break;
 
             	default :
-            	    break loop36;
+            	    break loop37;
                 }
             } while (true);
 
@@ -13628,14 +13818,14 @@
 
 
     // $ANTLR start "rule__Node__Group_5__2"
-    // InternalHenshin_text.g:4218:1: rule__Node__Group_5__2 : rule__Node__Group_5__2__Impl ;
+    // InternalHenshin_text.g:4267:1: rule__Node__Group_5__2 : rule__Node__Group_5__2__Impl ;
     public final void rule__Node__Group_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4222:1: ( rule__Node__Group_5__2__Impl )
-            // InternalHenshin_text.g:4223:2: rule__Node__Group_5__2__Impl
+            // InternalHenshin_text.g:4271:1: ( rule__Node__Group_5__2__Impl )
+            // InternalHenshin_text.g:4272:2: rule__Node__Group_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Node__Group_5__2__Impl();
@@ -13661,20 +13851,20 @@
 
 
     // $ANTLR start "rule__Node__Group_5__2__Impl"
-    // InternalHenshin_text.g:4229:1: rule__Node__Group_5__2__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:4278:1: rule__Node__Group_5__2__Impl : ( '}' ) ;
     public final void rule__Node__Group_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4233:1: ( ( '}' ) )
-            // InternalHenshin_text.g:4234:1: ( '}' )
+            // InternalHenshin_text.g:4282:1: ( ( '}' ) )
+            // InternalHenshin_text.g:4283:1: ( '}' )
             {
-            // InternalHenshin_text.g:4234:1: ( '}' )
-            // InternalHenshin_text.g:4235:2: '}'
+            // InternalHenshin_text.g:4283:1: ( '}' )
+            // InternalHenshin_text.g:4284:2: '}'
             {
              before(grammarAccess.getNodeAccess().getRightCurlyBracketKeyword_5_2()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getNodeAccess().getRightCurlyBracketKeyword_5_2()); 
 
             }
@@ -13698,14 +13888,14 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group__0"
-    // InternalHenshin_text.g:4245:1: rule__MultiRuleReuseNode__Group__0 : rule__MultiRuleReuseNode__Group__0__Impl rule__MultiRuleReuseNode__Group__1 ;
+    // InternalHenshin_text.g:4294:1: rule__MultiRuleReuseNode__Group__0 : rule__MultiRuleReuseNode__Group__0__Impl rule__MultiRuleReuseNode__Group__1 ;
     public final void rule__MultiRuleReuseNode__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4249:1: ( rule__MultiRuleReuseNode__Group__0__Impl rule__MultiRuleReuseNode__Group__1 )
-            // InternalHenshin_text.g:4250:2: rule__MultiRuleReuseNode__Group__0__Impl rule__MultiRuleReuseNode__Group__1
+            // InternalHenshin_text.g:4298:1: ( rule__MultiRuleReuseNode__Group__0__Impl rule__MultiRuleReuseNode__Group__1 )
+            // InternalHenshin_text.g:4299:2: rule__MultiRuleReuseNode__Group__0__Impl rule__MultiRuleReuseNode__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__MultiRuleReuseNode__Group__0__Impl();
@@ -13736,20 +13926,20 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group__0__Impl"
-    // InternalHenshin_text.g:4257:1: rule__MultiRuleReuseNode__Group__0__Impl : ( 'reuse' ) ;
+    // InternalHenshin_text.g:4306:1: rule__MultiRuleReuseNode__Group__0__Impl : ( 'reuse' ) ;
     public final void rule__MultiRuleReuseNode__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4261:1: ( ( 'reuse' ) )
-            // InternalHenshin_text.g:4262:1: ( 'reuse' )
+            // InternalHenshin_text.g:4310:1: ( ( 'reuse' ) )
+            // InternalHenshin_text.g:4311:1: ( 'reuse' )
             {
-            // InternalHenshin_text.g:4262:1: ( 'reuse' )
-            // InternalHenshin_text.g:4263:2: 'reuse'
+            // InternalHenshin_text.g:4311:1: ( 'reuse' )
+            // InternalHenshin_text.g:4312:2: 'reuse'
             {
              before(grammarAccess.getMultiRuleReuseNodeAccess().getReuseKeyword_0()); 
-            match(input,83,FOLLOW_2); 
+            match(input,87,FOLLOW_2); 
              after(grammarAccess.getMultiRuleReuseNodeAccess().getReuseKeyword_0()); 
 
             }
@@ -13773,14 +13963,14 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group__1"
-    // InternalHenshin_text.g:4272:1: rule__MultiRuleReuseNode__Group__1 : rule__MultiRuleReuseNode__Group__1__Impl rule__MultiRuleReuseNode__Group__2 ;
+    // InternalHenshin_text.g:4321:1: rule__MultiRuleReuseNode__Group__1 : rule__MultiRuleReuseNode__Group__1__Impl rule__MultiRuleReuseNode__Group__2 ;
     public final void rule__MultiRuleReuseNode__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4276:1: ( rule__MultiRuleReuseNode__Group__1__Impl rule__MultiRuleReuseNode__Group__2 )
-            // InternalHenshin_text.g:4277:2: rule__MultiRuleReuseNode__Group__1__Impl rule__MultiRuleReuseNode__Group__2
+            // InternalHenshin_text.g:4325:1: ( rule__MultiRuleReuseNode__Group__1__Impl rule__MultiRuleReuseNode__Group__2 )
+            // InternalHenshin_text.g:4326:2: rule__MultiRuleReuseNode__Group__1__Impl rule__MultiRuleReuseNode__Group__2
             {
             pushFollow(FOLLOW_12);
             rule__MultiRuleReuseNode__Group__1__Impl();
@@ -13811,21 +14001,21 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group__1__Impl"
-    // InternalHenshin_text.g:4284:1: rule__MultiRuleReuseNode__Group__1__Impl : ( ( rule__MultiRuleReuseNode__NameAssignment_1 ) ) ;
+    // InternalHenshin_text.g:4333:1: rule__MultiRuleReuseNode__Group__1__Impl : ( ( rule__MultiRuleReuseNode__NameAssignment_1 ) ) ;
     public final void rule__MultiRuleReuseNode__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4288:1: ( ( ( rule__MultiRuleReuseNode__NameAssignment_1 ) ) )
-            // InternalHenshin_text.g:4289:1: ( ( rule__MultiRuleReuseNode__NameAssignment_1 ) )
+            // InternalHenshin_text.g:4337:1: ( ( ( rule__MultiRuleReuseNode__NameAssignment_1 ) ) )
+            // InternalHenshin_text.g:4338:1: ( ( rule__MultiRuleReuseNode__NameAssignment_1 ) )
             {
-            // InternalHenshin_text.g:4289:1: ( ( rule__MultiRuleReuseNode__NameAssignment_1 ) )
-            // InternalHenshin_text.g:4290:2: ( rule__MultiRuleReuseNode__NameAssignment_1 )
+            // InternalHenshin_text.g:4338:1: ( ( rule__MultiRuleReuseNode__NameAssignment_1 ) )
+            // InternalHenshin_text.g:4339:2: ( rule__MultiRuleReuseNode__NameAssignment_1 )
             {
              before(grammarAccess.getMultiRuleReuseNodeAccess().getNameAssignment_1()); 
-            // InternalHenshin_text.g:4291:2: ( rule__MultiRuleReuseNode__NameAssignment_1 )
-            // InternalHenshin_text.g:4291:3: rule__MultiRuleReuseNode__NameAssignment_1
+            // InternalHenshin_text.g:4340:2: ( rule__MultiRuleReuseNode__NameAssignment_1 )
+            // InternalHenshin_text.g:4340:3: rule__MultiRuleReuseNode__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__MultiRuleReuseNode__NameAssignment_1();
@@ -13858,14 +14048,14 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group__2"
-    // InternalHenshin_text.g:4299:1: rule__MultiRuleReuseNode__Group__2 : rule__MultiRuleReuseNode__Group__2__Impl ;
+    // InternalHenshin_text.g:4348:1: rule__MultiRuleReuseNode__Group__2 : rule__MultiRuleReuseNode__Group__2__Impl ;
     public final void rule__MultiRuleReuseNode__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4303:1: ( rule__MultiRuleReuseNode__Group__2__Impl )
-            // InternalHenshin_text.g:4304:2: rule__MultiRuleReuseNode__Group__2__Impl
+            // InternalHenshin_text.g:4352:1: ( rule__MultiRuleReuseNode__Group__2__Impl )
+            // InternalHenshin_text.g:4353:2: rule__MultiRuleReuseNode__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__MultiRuleReuseNode__Group__2__Impl();
@@ -13891,29 +14081,29 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group__2__Impl"
-    // InternalHenshin_text.g:4310:1: rule__MultiRuleReuseNode__Group__2__Impl : ( ( rule__MultiRuleReuseNode__Group_2__0 )? ) ;
+    // InternalHenshin_text.g:4359:1: rule__MultiRuleReuseNode__Group__2__Impl : ( ( rule__MultiRuleReuseNode__Group_2__0 )? ) ;
     public final void rule__MultiRuleReuseNode__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4314:1: ( ( ( rule__MultiRuleReuseNode__Group_2__0 )? ) )
-            // InternalHenshin_text.g:4315:1: ( ( rule__MultiRuleReuseNode__Group_2__0 )? )
+            // InternalHenshin_text.g:4363:1: ( ( ( rule__MultiRuleReuseNode__Group_2__0 )? ) )
+            // InternalHenshin_text.g:4364:1: ( ( rule__MultiRuleReuseNode__Group_2__0 )? )
             {
-            // InternalHenshin_text.g:4315:1: ( ( rule__MultiRuleReuseNode__Group_2__0 )? )
-            // InternalHenshin_text.g:4316:2: ( rule__MultiRuleReuseNode__Group_2__0 )?
+            // InternalHenshin_text.g:4364:1: ( ( rule__MultiRuleReuseNode__Group_2__0 )? )
+            // InternalHenshin_text.g:4365:2: ( rule__MultiRuleReuseNode__Group_2__0 )?
             {
              before(grammarAccess.getMultiRuleReuseNodeAccess().getGroup_2()); 
-            // InternalHenshin_text.g:4317:2: ( rule__MultiRuleReuseNode__Group_2__0 )?
-            int alt37=2;
-            int LA37_0 = input.LA(1);
+            // InternalHenshin_text.g:4366:2: ( rule__MultiRuleReuseNode__Group_2__0 )?
+            int alt38=2;
+            int LA38_0 = input.LA(1);
 
-            if ( (LA37_0==68) ) {
-                alt37=1;
+            if ( (LA38_0==72) ) {
+                alt38=1;
             }
-            switch (alt37) {
+            switch (alt38) {
                 case 1 :
-                    // InternalHenshin_text.g:4317:3: rule__MultiRuleReuseNode__Group_2__0
+                    // InternalHenshin_text.g:4366:3: rule__MultiRuleReuseNode__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__MultiRuleReuseNode__Group_2__0();
@@ -13949,16 +14139,16 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group_2__0"
-    // InternalHenshin_text.g:4326:1: rule__MultiRuleReuseNode__Group_2__0 : rule__MultiRuleReuseNode__Group_2__0__Impl rule__MultiRuleReuseNode__Group_2__1 ;
+    // InternalHenshin_text.g:4375:1: rule__MultiRuleReuseNode__Group_2__0 : rule__MultiRuleReuseNode__Group_2__0__Impl rule__MultiRuleReuseNode__Group_2__1 ;
     public final void rule__MultiRuleReuseNode__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4330:1: ( rule__MultiRuleReuseNode__Group_2__0__Impl rule__MultiRuleReuseNode__Group_2__1 )
-            // InternalHenshin_text.g:4331:2: rule__MultiRuleReuseNode__Group_2__0__Impl rule__MultiRuleReuseNode__Group_2__1
+            // InternalHenshin_text.g:4379:1: ( rule__MultiRuleReuseNode__Group_2__0__Impl rule__MultiRuleReuseNode__Group_2__1 )
+            // InternalHenshin_text.g:4380:2: rule__MultiRuleReuseNode__Group_2__0__Impl rule__MultiRuleReuseNode__Group_2__1
             {
-            pushFollow(FOLLOW_30);
+            pushFollow(FOLLOW_31);
             rule__MultiRuleReuseNode__Group_2__0__Impl();
 
             state._fsp--;
@@ -13987,20 +14177,20 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group_2__0__Impl"
-    // InternalHenshin_text.g:4338:1: rule__MultiRuleReuseNode__Group_2__0__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:4387:1: rule__MultiRuleReuseNode__Group_2__0__Impl : ( '{' ) ;
     public final void rule__MultiRuleReuseNode__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4342:1: ( ( '{' ) )
-            // InternalHenshin_text.g:4343:1: ( '{' )
+            // InternalHenshin_text.g:4391:1: ( ( '{' ) )
+            // InternalHenshin_text.g:4392:1: ( '{' )
             {
-            // InternalHenshin_text.g:4343:1: ( '{' )
-            // InternalHenshin_text.g:4344:2: '{'
+            // InternalHenshin_text.g:4392:1: ( '{' )
+            // InternalHenshin_text.g:4393:2: '{'
             {
              before(grammarAccess.getMultiRuleReuseNodeAccess().getLeftCurlyBracketKeyword_2_0()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getMultiRuleReuseNodeAccess().getLeftCurlyBracketKeyword_2_0()); 
 
             }
@@ -14024,16 +14214,16 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group_2__1"
-    // InternalHenshin_text.g:4353:1: rule__MultiRuleReuseNode__Group_2__1 : rule__MultiRuleReuseNode__Group_2__1__Impl rule__MultiRuleReuseNode__Group_2__2 ;
+    // InternalHenshin_text.g:4402:1: rule__MultiRuleReuseNode__Group_2__1 : rule__MultiRuleReuseNode__Group_2__1__Impl rule__MultiRuleReuseNode__Group_2__2 ;
     public final void rule__MultiRuleReuseNode__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4357:1: ( rule__MultiRuleReuseNode__Group_2__1__Impl rule__MultiRuleReuseNode__Group_2__2 )
-            // InternalHenshin_text.g:4358:2: rule__MultiRuleReuseNode__Group_2__1__Impl rule__MultiRuleReuseNode__Group_2__2
+            // InternalHenshin_text.g:4406:1: ( rule__MultiRuleReuseNode__Group_2__1__Impl rule__MultiRuleReuseNode__Group_2__2 )
+            // InternalHenshin_text.g:4407:2: rule__MultiRuleReuseNode__Group_2__1__Impl rule__MultiRuleReuseNode__Group_2__2
             {
-            pushFollow(FOLLOW_30);
+            pushFollow(FOLLOW_31);
             rule__MultiRuleReuseNode__Group_2__1__Impl();
 
             state._fsp--;
@@ -14062,35 +14252,35 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group_2__1__Impl"
-    // InternalHenshin_text.g:4365:1: rule__MultiRuleReuseNode__Group_2__1__Impl : ( ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )* ) ;
+    // InternalHenshin_text.g:4414:1: rule__MultiRuleReuseNode__Group_2__1__Impl : ( ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )* ) ;
     public final void rule__MultiRuleReuseNode__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4369:1: ( ( ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )* ) )
-            // InternalHenshin_text.g:4370:1: ( ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )* )
+            // InternalHenshin_text.g:4418:1: ( ( ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )* ) )
+            // InternalHenshin_text.g:4419:1: ( ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )* )
             {
-            // InternalHenshin_text.g:4370:1: ( ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )* )
-            // InternalHenshin_text.g:4371:2: ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )*
+            // InternalHenshin_text.g:4419:1: ( ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )* )
+            // InternalHenshin_text.g:4420:2: ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )*
             {
              before(grammarAccess.getMultiRuleReuseNodeAccess().getAttributeAssignment_2_1()); 
-            // InternalHenshin_text.g:4372:2: ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )*
-            loop38:
+            // InternalHenshin_text.g:4421:2: ( rule__MultiRuleReuseNode__AttributeAssignment_2_1 )*
+            loop39:
             do {
-                int alt38=2;
-                int LA38_0 = input.LA(1);
+                int alt39=2;
+                int LA39_0 = input.LA(1);
 
-                if ( (LA38_0==RULE_ID||(LA38_0>=13 && LA38_0<=17)||LA38_0==102) ) {
-                    alt38=1;
+                if ( (LA39_0==RULE_ID||(LA39_0>=13 && LA39_0<=17)||LA39_0==106) ) {
+                    alt39=1;
                 }
 
 
-                switch (alt38) {
+                switch (alt39) {
             	case 1 :
-            	    // InternalHenshin_text.g:4372:3: rule__MultiRuleReuseNode__AttributeAssignment_2_1
+            	    // InternalHenshin_text.g:4421:3: rule__MultiRuleReuseNode__AttributeAssignment_2_1
             	    {
-            	    pushFollow(FOLLOW_31);
+            	    pushFollow(FOLLOW_32);
             	    rule__MultiRuleReuseNode__AttributeAssignment_2_1();
 
             	    state._fsp--;
@@ -14100,7 +14290,7 @@
             	    break;
 
             	default :
-            	    break loop38;
+            	    break loop39;
                 }
             } while (true);
 
@@ -14127,14 +14317,14 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group_2__2"
-    // InternalHenshin_text.g:4380:1: rule__MultiRuleReuseNode__Group_2__2 : rule__MultiRuleReuseNode__Group_2__2__Impl ;
+    // InternalHenshin_text.g:4429:1: rule__MultiRuleReuseNode__Group_2__2 : rule__MultiRuleReuseNode__Group_2__2__Impl ;
     public final void rule__MultiRuleReuseNode__Group_2__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4384:1: ( rule__MultiRuleReuseNode__Group_2__2__Impl )
-            // InternalHenshin_text.g:4385:2: rule__MultiRuleReuseNode__Group_2__2__Impl
+            // InternalHenshin_text.g:4433:1: ( rule__MultiRuleReuseNode__Group_2__2__Impl )
+            // InternalHenshin_text.g:4434:2: rule__MultiRuleReuseNode__Group_2__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__MultiRuleReuseNode__Group_2__2__Impl();
@@ -14160,20 +14350,20 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__Group_2__2__Impl"
-    // InternalHenshin_text.g:4391:1: rule__MultiRuleReuseNode__Group_2__2__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:4440:1: rule__MultiRuleReuseNode__Group_2__2__Impl : ( '}' ) ;
     public final void rule__MultiRuleReuseNode__Group_2__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4395:1: ( ( '}' ) )
-            // InternalHenshin_text.g:4396:1: ( '}' )
+            // InternalHenshin_text.g:4444:1: ( ( '}' ) )
+            // InternalHenshin_text.g:4445:1: ( '}' )
             {
-            // InternalHenshin_text.g:4396:1: ( '}' )
-            // InternalHenshin_text.g:4397:2: '}'
+            // InternalHenshin_text.g:4445:1: ( '}' )
+            // InternalHenshin_text.g:4446:2: '}'
             {
              before(grammarAccess.getMultiRuleReuseNodeAccess().getRightCurlyBracketKeyword_2_2()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getMultiRuleReuseNodeAccess().getRightCurlyBracketKeyword_2_2()); 
 
             }
@@ -14197,16 +14387,16 @@
 
 
     // $ANTLR start "rule__Attribute__Group_0__0"
-    // InternalHenshin_text.g:4407:1: rule__Attribute__Group_0__0 : rule__Attribute__Group_0__0__Impl rule__Attribute__Group_0__1 ;
+    // InternalHenshin_text.g:4456:1: rule__Attribute__Group_0__0 : rule__Attribute__Group_0__0__Impl rule__Attribute__Group_0__1 ;
     public final void rule__Attribute__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4411:1: ( rule__Attribute__Group_0__0__Impl rule__Attribute__Group_0__1 )
-            // InternalHenshin_text.g:4412:2: rule__Attribute__Group_0__0__Impl rule__Attribute__Group_0__1
+            // InternalHenshin_text.g:4460:1: ( rule__Attribute__Group_0__0__Impl rule__Attribute__Group_0__1 )
+            // InternalHenshin_text.g:4461:2: rule__Attribute__Group_0__0__Impl rule__Attribute__Group_0__1
             {
-            pushFollow(FOLLOW_25);
+            pushFollow(FOLLOW_26);
             rule__Attribute__Group_0__0__Impl();
 
             state._fsp--;
@@ -14235,29 +14425,29 @@
 
 
     // $ANTLR start "rule__Attribute__Group_0__0__Impl"
-    // InternalHenshin_text.g:4419:1: rule__Attribute__Group_0__0__Impl : ( ( rule__Attribute__ActiontypeAssignment_0_0 )? ) ;
+    // InternalHenshin_text.g:4468:1: rule__Attribute__Group_0__0__Impl : ( ( rule__Attribute__ActiontypeAssignment_0_0 )? ) ;
     public final void rule__Attribute__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4423:1: ( ( ( rule__Attribute__ActiontypeAssignment_0_0 )? ) )
-            // InternalHenshin_text.g:4424:1: ( ( rule__Attribute__ActiontypeAssignment_0_0 )? )
+            // InternalHenshin_text.g:4472:1: ( ( ( rule__Attribute__ActiontypeAssignment_0_0 )? ) )
+            // InternalHenshin_text.g:4473:1: ( ( rule__Attribute__ActiontypeAssignment_0_0 )? )
             {
-            // InternalHenshin_text.g:4424:1: ( ( rule__Attribute__ActiontypeAssignment_0_0 )? )
-            // InternalHenshin_text.g:4425:2: ( rule__Attribute__ActiontypeAssignment_0_0 )?
+            // InternalHenshin_text.g:4473:1: ( ( rule__Attribute__ActiontypeAssignment_0_0 )? )
+            // InternalHenshin_text.g:4474:2: ( rule__Attribute__ActiontypeAssignment_0_0 )?
             {
              before(grammarAccess.getAttributeAccess().getActiontypeAssignment_0_0()); 
-            // InternalHenshin_text.g:4426:2: ( rule__Attribute__ActiontypeAssignment_0_0 )?
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+            // InternalHenshin_text.g:4475:2: ( rule__Attribute__ActiontypeAssignment_0_0 )?
+            int alt40=2;
+            int LA40_0 = input.LA(1);
 
-            if ( ((LA39_0>=13 && LA39_0<=17)) ) {
-                alt39=1;
+            if ( ((LA40_0>=13 && LA40_0<=17)) ) {
+                alt40=1;
             }
-            switch (alt39) {
+            switch (alt40) {
                 case 1 :
-                    // InternalHenshin_text.g:4426:3: rule__Attribute__ActiontypeAssignment_0_0
+                    // InternalHenshin_text.g:4475:3: rule__Attribute__ActiontypeAssignment_0_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Attribute__ActiontypeAssignment_0_0();
@@ -14293,16 +14483,16 @@
 
 
     // $ANTLR start "rule__Attribute__Group_0__1"
-    // InternalHenshin_text.g:4434:1: rule__Attribute__Group_0__1 : rule__Attribute__Group_0__1__Impl rule__Attribute__Group_0__2 ;
+    // InternalHenshin_text.g:4483:1: rule__Attribute__Group_0__1 : rule__Attribute__Group_0__1__Impl rule__Attribute__Group_0__2 ;
     public final void rule__Attribute__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4438:1: ( rule__Attribute__Group_0__1__Impl rule__Attribute__Group_0__2 )
-            // InternalHenshin_text.g:4439:2: rule__Attribute__Group_0__1__Impl rule__Attribute__Group_0__2
+            // InternalHenshin_text.g:4487:1: ( rule__Attribute__Group_0__1__Impl rule__Attribute__Group_0__2 )
+            // InternalHenshin_text.g:4488:2: rule__Attribute__Group_0__1__Impl rule__Attribute__Group_0__2
             {
-            pushFollow(FOLLOW_32);
+            pushFollow(FOLLOW_33);
             rule__Attribute__Group_0__1__Impl();
 
             state._fsp--;
@@ -14331,21 +14521,21 @@
 
 
     // $ANTLR start "rule__Attribute__Group_0__1__Impl"
-    // InternalHenshin_text.g:4446:1: rule__Attribute__Group_0__1__Impl : ( ( rule__Attribute__NameAssignment_0_1 ) ) ;
+    // InternalHenshin_text.g:4495:1: rule__Attribute__Group_0__1__Impl : ( ( rule__Attribute__NameAssignment_0_1 ) ) ;
     public final void rule__Attribute__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4450:1: ( ( ( rule__Attribute__NameAssignment_0_1 ) ) )
-            // InternalHenshin_text.g:4451:1: ( ( rule__Attribute__NameAssignment_0_1 ) )
+            // InternalHenshin_text.g:4499:1: ( ( ( rule__Attribute__NameAssignment_0_1 ) ) )
+            // InternalHenshin_text.g:4500:1: ( ( rule__Attribute__NameAssignment_0_1 ) )
             {
-            // InternalHenshin_text.g:4451:1: ( ( rule__Attribute__NameAssignment_0_1 ) )
-            // InternalHenshin_text.g:4452:2: ( rule__Attribute__NameAssignment_0_1 )
+            // InternalHenshin_text.g:4500:1: ( ( rule__Attribute__NameAssignment_0_1 ) )
+            // InternalHenshin_text.g:4501:2: ( rule__Attribute__NameAssignment_0_1 )
             {
              before(grammarAccess.getAttributeAccess().getNameAssignment_0_1()); 
-            // InternalHenshin_text.g:4453:2: ( rule__Attribute__NameAssignment_0_1 )
-            // InternalHenshin_text.g:4453:3: rule__Attribute__NameAssignment_0_1
+            // InternalHenshin_text.g:4502:2: ( rule__Attribute__NameAssignment_0_1 )
+            // InternalHenshin_text.g:4502:3: rule__Attribute__NameAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__Attribute__NameAssignment_0_1();
@@ -14378,16 +14568,16 @@
 
 
     // $ANTLR start "rule__Attribute__Group_0__2"
-    // InternalHenshin_text.g:4461:1: rule__Attribute__Group_0__2 : rule__Attribute__Group_0__2__Impl rule__Attribute__Group_0__3 ;
+    // InternalHenshin_text.g:4510:1: rule__Attribute__Group_0__2 : rule__Attribute__Group_0__2__Impl rule__Attribute__Group_0__3 ;
     public final void rule__Attribute__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4465:1: ( rule__Attribute__Group_0__2__Impl rule__Attribute__Group_0__3 )
-            // InternalHenshin_text.g:4466:2: rule__Attribute__Group_0__2__Impl rule__Attribute__Group_0__3
+            // InternalHenshin_text.g:4514:1: ( rule__Attribute__Group_0__2__Impl rule__Attribute__Group_0__3 )
+            // InternalHenshin_text.g:4515:2: rule__Attribute__Group_0__2__Impl rule__Attribute__Group_0__3
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__Attribute__Group_0__2__Impl();
 
             state._fsp--;
@@ -14416,20 +14606,20 @@
 
 
     // $ANTLR start "rule__Attribute__Group_0__2__Impl"
-    // InternalHenshin_text.g:4473:1: rule__Attribute__Group_0__2__Impl : ( '=' ) ;
+    // InternalHenshin_text.g:4522:1: rule__Attribute__Group_0__2__Impl : ( '=' ) ;
     public final void rule__Attribute__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4477:1: ( ( '=' ) )
-            // InternalHenshin_text.g:4478:1: ( '=' )
+            // InternalHenshin_text.g:4526:1: ( ( '=' ) )
+            // InternalHenshin_text.g:4527:1: ( '=' )
             {
-            // InternalHenshin_text.g:4478:1: ( '=' )
-            // InternalHenshin_text.g:4479:2: '='
+            // InternalHenshin_text.g:4527:1: ( '=' )
+            // InternalHenshin_text.g:4528:2: '='
             {
              before(grammarAccess.getAttributeAccess().getEqualsSignKeyword_0_2()); 
-            match(input,84,FOLLOW_2); 
+            match(input,88,FOLLOW_2); 
              after(grammarAccess.getAttributeAccess().getEqualsSignKeyword_0_2()); 
 
             }
@@ -14453,14 +14643,14 @@
 
 
     // $ANTLR start "rule__Attribute__Group_0__3"
-    // InternalHenshin_text.g:4488:1: rule__Attribute__Group_0__3 : rule__Attribute__Group_0__3__Impl ;
+    // InternalHenshin_text.g:4537:1: rule__Attribute__Group_0__3 : rule__Attribute__Group_0__3__Impl ;
     public final void rule__Attribute__Group_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4492:1: ( rule__Attribute__Group_0__3__Impl )
-            // InternalHenshin_text.g:4493:2: rule__Attribute__Group_0__3__Impl
+            // InternalHenshin_text.g:4541:1: ( rule__Attribute__Group_0__3__Impl )
+            // InternalHenshin_text.g:4542:2: rule__Attribute__Group_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Attribute__Group_0__3__Impl();
@@ -14486,21 +14676,21 @@
 
 
     // $ANTLR start "rule__Attribute__Group_0__3__Impl"
-    // InternalHenshin_text.g:4499:1: rule__Attribute__Group_0__3__Impl : ( ( rule__Attribute__ValueAssignment_0_3 ) ) ;
+    // InternalHenshin_text.g:4548:1: rule__Attribute__Group_0__3__Impl : ( ( rule__Attribute__ValueAssignment_0_3 ) ) ;
     public final void rule__Attribute__Group_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4503:1: ( ( ( rule__Attribute__ValueAssignment_0_3 ) ) )
-            // InternalHenshin_text.g:4504:1: ( ( rule__Attribute__ValueAssignment_0_3 ) )
+            // InternalHenshin_text.g:4552:1: ( ( ( rule__Attribute__ValueAssignment_0_3 ) ) )
+            // InternalHenshin_text.g:4553:1: ( ( rule__Attribute__ValueAssignment_0_3 ) )
             {
-            // InternalHenshin_text.g:4504:1: ( ( rule__Attribute__ValueAssignment_0_3 ) )
-            // InternalHenshin_text.g:4505:2: ( rule__Attribute__ValueAssignment_0_3 )
+            // InternalHenshin_text.g:4553:1: ( ( rule__Attribute__ValueAssignment_0_3 ) )
+            // InternalHenshin_text.g:4554:2: ( rule__Attribute__ValueAssignment_0_3 )
             {
              before(grammarAccess.getAttributeAccess().getValueAssignment_0_3()); 
-            // InternalHenshin_text.g:4506:2: ( rule__Attribute__ValueAssignment_0_3 )
-            // InternalHenshin_text.g:4506:3: rule__Attribute__ValueAssignment_0_3
+            // InternalHenshin_text.g:4555:2: ( rule__Attribute__ValueAssignment_0_3 )
+            // InternalHenshin_text.g:4555:3: rule__Attribute__ValueAssignment_0_3
             {
             pushFollow(FOLLOW_2);
             rule__Attribute__ValueAssignment_0_3();
@@ -14533,14 +14723,14 @@
 
 
     // $ANTLR start "rule__Attribute__Group_1__0"
-    // InternalHenshin_text.g:4515:1: rule__Attribute__Group_1__0 : rule__Attribute__Group_1__0__Impl rule__Attribute__Group_1__1 ;
+    // InternalHenshin_text.g:4564:1: rule__Attribute__Group_1__0 : rule__Attribute__Group_1__0__Impl rule__Attribute__Group_1__1 ;
     public final void rule__Attribute__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4519:1: ( rule__Attribute__Group_1__0__Impl rule__Attribute__Group_1__1 )
-            // InternalHenshin_text.g:4520:2: rule__Attribute__Group_1__0__Impl rule__Attribute__Group_1__1
+            // InternalHenshin_text.g:4568:1: ( rule__Attribute__Group_1__0__Impl rule__Attribute__Group_1__1 )
+            // InternalHenshin_text.g:4569:2: rule__Attribute__Group_1__0__Impl rule__Attribute__Group_1__1
             {
             pushFollow(FOLLOW_7);
             rule__Attribute__Group_1__0__Impl();
@@ -14571,21 +14761,21 @@
 
 
     // $ANTLR start "rule__Attribute__Group_1__0__Impl"
-    // InternalHenshin_text.g:4527:1: rule__Attribute__Group_1__0__Impl : ( ( rule__Attribute__UpdateAssignment_1_0 ) ) ;
+    // InternalHenshin_text.g:4576:1: rule__Attribute__Group_1__0__Impl : ( ( rule__Attribute__UpdateAssignment_1_0 ) ) ;
     public final void rule__Attribute__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4531:1: ( ( ( rule__Attribute__UpdateAssignment_1_0 ) ) )
-            // InternalHenshin_text.g:4532:1: ( ( rule__Attribute__UpdateAssignment_1_0 ) )
+            // InternalHenshin_text.g:4580:1: ( ( ( rule__Attribute__UpdateAssignment_1_0 ) ) )
+            // InternalHenshin_text.g:4581:1: ( ( rule__Attribute__UpdateAssignment_1_0 ) )
             {
-            // InternalHenshin_text.g:4532:1: ( ( rule__Attribute__UpdateAssignment_1_0 ) )
-            // InternalHenshin_text.g:4533:2: ( rule__Attribute__UpdateAssignment_1_0 )
+            // InternalHenshin_text.g:4581:1: ( ( rule__Attribute__UpdateAssignment_1_0 ) )
+            // InternalHenshin_text.g:4582:2: ( rule__Attribute__UpdateAssignment_1_0 )
             {
              before(grammarAccess.getAttributeAccess().getUpdateAssignment_1_0()); 
-            // InternalHenshin_text.g:4534:2: ( rule__Attribute__UpdateAssignment_1_0 )
-            // InternalHenshin_text.g:4534:3: rule__Attribute__UpdateAssignment_1_0
+            // InternalHenshin_text.g:4583:2: ( rule__Attribute__UpdateAssignment_1_0 )
+            // InternalHenshin_text.g:4583:3: rule__Attribute__UpdateAssignment_1_0
             {
             pushFollow(FOLLOW_2);
             rule__Attribute__UpdateAssignment_1_0();
@@ -14618,16 +14808,16 @@
 
 
     // $ANTLR start "rule__Attribute__Group_1__1"
-    // InternalHenshin_text.g:4542:1: rule__Attribute__Group_1__1 : rule__Attribute__Group_1__1__Impl rule__Attribute__Group_1__2 ;
+    // InternalHenshin_text.g:4591:1: rule__Attribute__Group_1__1 : rule__Attribute__Group_1__1__Impl rule__Attribute__Group_1__2 ;
     public final void rule__Attribute__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4546:1: ( rule__Attribute__Group_1__1__Impl rule__Attribute__Group_1__2 )
-            // InternalHenshin_text.g:4547:2: rule__Attribute__Group_1__1__Impl rule__Attribute__Group_1__2
+            // InternalHenshin_text.g:4595:1: ( rule__Attribute__Group_1__1__Impl rule__Attribute__Group_1__2 )
+            // InternalHenshin_text.g:4596:2: rule__Attribute__Group_1__1__Impl rule__Attribute__Group_1__2
             {
-            pushFollow(FOLLOW_32);
+            pushFollow(FOLLOW_33);
             rule__Attribute__Group_1__1__Impl();
 
             state._fsp--;
@@ -14656,21 +14846,21 @@
 
 
     // $ANTLR start "rule__Attribute__Group_1__1__Impl"
-    // InternalHenshin_text.g:4554:1: rule__Attribute__Group_1__1__Impl : ( ( rule__Attribute__NameAssignment_1_1 ) ) ;
+    // InternalHenshin_text.g:4603:1: rule__Attribute__Group_1__1__Impl : ( ( rule__Attribute__NameAssignment_1_1 ) ) ;
     public final void rule__Attribute__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4558:1: ( ( ( rule__Attribute__NameAssignment_1_1 ) ) )
-            // InternalHenshin_text.g:4559:1: ( ( rule__Attribute__NameAssignment_1_1 ) )
+            // InternalHenshin_text.g:4607:1: ( ( ( rule__Attribute__NameAssignment_1_1 ) ) )
+            // InternalHenshin_text.g:4608:1: ( ( rule__Attribute__NameAssignment_1_1 ) )
             {
-            // InternalHenshin_text.g:4559:1: ( ( rule__Attribute__NameAssignment_1_1 ) )
-            // InternalHenshin_text.g:4560:2: ( rule__Attribute__NameAssignment_1_1 )
+            // InternalHenshin_text.g:4608:1: ( ( rule__Attribute__NameAssignment_1_1 ) )
+            // InternalHenshin_text.g:4609:2: ( rule__Attribute__NameAssignment_1_1 )
             {
              before(grammarAccess.getAttributeAccess().getNameAssignment_1_1()); 
-            // InternalHenshin_text.g:4561:2: ( rule__Attribute__NameAssignment_1_1 )
-            // InternalHenshin_text.g:4561:3: rule__Attribute__NameAssignment_1_1
+            // InternalHenshin_text.g:4610:2: ( rule__Attribute__NameAssignment_1_1 )
+            // InternalHenshin_text.g:4610:3: rule__Attribute__NameAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__Attribute__NameAssignment_1_1();
@@ -14703,16 +14893,16 @@
 
 
     // $ANTLR start "rule__Attribute__Group_1__2"
-    // InternalHenshin_text.g:4569:1: rule__Attribute__Group_1__2 : rule__Attribute__Group_1__2__Impl rule__Attribute__Group_1__3 ;
+    // InternalHenshin_text.g:4618:1: rule__Attribute__Group_1__2 : rule__Attribute__Group_1__2__Impl rule__Attribute__Group_1__3 ;
     public final void rule__Attribute__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4573:1: ( rule__Attribute__Group_1__2__Impl rule__Attribute__Group_1__3 )
-            // InternalHenshin_text.g:4574:2: rule__Attribute__Group_1__2__Impl rule__Attribute__Group_1__3
+            // InternalHenshin_text.g:4622:1: ( rule__Attribute__Group_1__2__Impl rule__Attribute__Group_1__3 )
+            // InternalHenshin_text.g:4623:2: rule__Attribute__Group_1__2__Impl rule__Attribute__Group_1__3
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__Attribute__Group_1__2__Impl();
 
             state._fsp--;
@@ -14741,20 +14931,20 @@
 
 
     // $ANTLR start "rule__Attribute__Group_1__2__Impl"
-    // InternalHenshin_text.g:4581:1: rule__Attribute__Group_1__2__Impl : ( '=' ) ;
+    // InternalHenshin_text.g:4630:1: rule__Attribute__Group_1__2__Impl : ( '=' ) ;
     public final void rule__Attribute__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4585:1: ( ( '=' ) )
-            // InternalHenshin_text.g:4586:1: ( '=' )
+            // InternalHenshin_text.g:4634:1: ( ( '=' ) )
+            // InternalHenshin_text.g:4635:1: ( '=' )
             {
-            // InternalHenshin_text.g:4586:1: ( '=' )
-            // InternalHenshin_text.g:4587:2: '='
+            // InternalHenshin_text.g:4635:1: ( '=' )
+            // InternalHenshin_text.g:4636:2: '='
             {
              before(grammarAccess.getAttributeAccess().getEqualsSignKeyword_1_2()); 
-            match(input,84,FOLLOW_2); 
+            match(input,88,FOLLOW_2); 
              after(grammarAccess.getAttributeAccess().getEqualsSignKeyword_1_2()); 
 
             }
@@ -14778,14 +14968,14 @@
 
 
     // $ANTLR start "rule__Attribute__Group_1__3"
-    // InternalHenshin_text.g:4596:1: rule__Attribute__Group_1__3 : rule__Attribute__Group_1__3__Impl ;
+    // InternalHenshin_text.g:4645:1: rule__Attribute__Group_1__3 : rule__Attribute__Group_1__3__Impl ;
     public final void rule__Attribute__Group_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4600:1: ( rule__Attribute__Group_1__3__Impl )
-            // InternalHenshin_text.g:4601:2: rule__Attribute__Group_1__3__Impl
+            // InternalHenshin_text.g:4649:1: ( rule__Attribute__Group_1__3__Impl )
+            // InternalHenshin_text.g:4650:2: rule__Attribute__Group_1__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Attribute__Group_1__3__Impl();
@@ -14811,21 +15001,21 @@
 
 
     // $ANTLR start "rule__Attribute__Group_1__3__Impl"
-    // InternalHenshin_text.g:4607:1: rule__Attribute__Group_1__3__Impl : ( ( rule__Attribute__ValueAssignment_1_3 ) ) ;
+    // InternalHenshin_text.g:4656:1: rule__Attribute__Group_1__3__Impl : ( ( rule__Attribute__ValueAssignment_1_3 ) ) ;
     public final void rule__Attribute__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4611:1: ( ( ( rule__Attribute__ValueAssignment_1_3 ) ) )
-            // InternalHenshin_text.g:4612:1: ( ( rule__Attribute__ValueAssignment_1_3 ) )
+            // InternalHenshin_text.g:4660:1: ( ( ( rule__Attribute__ValueAssignment_1_3 ) ) )
+            // InternalHenshin_text.g:4661:1: ( ( rule__Attribute__ValueAssignment_1_3 ) )
             {
-            // InternalHenshin_text.g:4612:1: ( ( rule__Attribute__ValueAssignment_1_3 ) )
-            // InternalHenshin_text.g:4613:2: ( rule__Attribute__ValueAssignment_1_3 )
+            // InternalHenshin_text.g:4661:1: ( ( rule__Attribute__ValueAssignment_1_3 ) )
+            // InternalHenshin_text.g:4662:2: ( rule__Attribute__ValueAssignment_1_3 )
             {
              before(grammarAccess.getAttributeAccess().getValueAssignment_1_3()); 
-            // InternalHenshin_text.g:4614:2: ( rule__Attribute__ValueAssignment_1_3 )
-            // InternalHenshin_text.g:4614:3: rule__Attribute__ValueAssignment_1_3
+            // InternalHenshin_text.g:4663:2: ( rule__Attribute__ValueAssignment_1_3 )
+            // InternalHenshin_text.g:4663:3: rule__Attribute__ValueAssignment_1_3
             {
             pushFollow(FOLLOW_2);
             rule__Attribute__ValueAssignment_1_3();
@@ -14858,14 +15048,14 @@
 
 
     // $ANTLR start "rule__MultiRule__Group__0"
-    // InternalHenshin_text.g:4623:1: rule__MultiRule__Group__0 : rule__MultiRule__Group__0__Impl rule__MultiRule__Group__1 ;
+    // InternalHenshin_text.g:4672:1: rule__MultiRule__Group__0 : rule__MultiRule__Group__0__Impl rule__MultiRule__Group__1 ;
     public final void rule__MultiRule__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4627:1: ( rule__MultiRule__Group__0__Impl rule__MultiRule__Group__1 )
-            // InternalHenshin_text.g:4628:2: rule__MultiRule__Group__0__Impl rule__MultiRule__Group__1
+            // InternalHenshin_text.g:4676:1: ( rule__MultiRule__Group__0__Impl rule__MultiRule__Group__1 )
+            // InternalHenshin_text.g:4677:2: rule__MultiRule__Group__0__Impl rule__MultiRule__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__MultiRule__Group__0__Impl();
@@ -14896,20 +15086,20 @@
 
 
     // $ANTLR start "rule__MultiRule__Group__0__Impl"
-    // InternalHenshin_text.g:4635:1: rule__MultiRule__Group__0__Impl : ( 'multiRule' ) ;
+    // InternalHenshin_text.g:4684:1: rule__MultiRule__Group__0__Impl : ( 'multiRule' ) ;
     public final void rule__MultiRule__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4639:1: ( ( 'multiRule' ) )
-            // InternalHenshin_text.g:4640:1: ( 'multiRule' )
+            // InternalHenshin_text.g:4688:1: ( ( 'multiRule' ) )
+            // InternalHenshin_text.g:4689:1: ( 'multiRule' )
             {
-            // InternalHenshin_text.g:4640:1: ( 'multiRule' )
-            // InternalHenshin_text.g:4641:2: 'multiRule'
+            // InternalHenshin_text.g:4689:1: ( 'multiRule' )
+            // InternalHenshin_text.g:4690:2: 'multiRule'
             {
              before(grammarAccess.getMultiRuleAccess().getMultiRuleKeyword_0()); 
-            match(input,85,FOLLOW_2); 
+            match(input,89,FOLLOW_2); 
              after(grammarAccess.getMultiRuleAccess().getMultiRuleKeyword_0()); 
 
             }
@@ -14933,14 +15123,14 @@
 
 
     // $ANTLR start "rule__MultiRule__Group__1"
-    // InternalHenshin_text.g:4650:1: rule__MultiRule__Group__1 : rule__MultiRule__Group__1__Impl rule__MultiRule__Group__2 ;
+    // InternalHenshin_text.g:4699:1: rule__MultiRule__Group__1 : rule__MultiRule__Group__1__Impl rule__MultiRule__Group__2 ;
     public final void rule__MultiRule__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4654:1: ( rule__MultiRule__Group__1__Impl rule__MultiRule__Group__2 )
-            // InternalHenshin_text.g:4655:2: rule__MultiRule__Group__1__Impl rule__MultiRule__Group__2
+            // InternalHenshin_text.g:4703:1: ( rule__MultiRule__Group__1__Impl rule__MultiRule__Group__2 )
+            // InternalHenshin_text.g:4704:2: rule__MultiRule__Group__1__Impl rule__MultiRule__Group__2
             {
             pushFollow(FOLLOW_12);
             rule__MultiRule__Group__1__Impl();
@@ -14971,21 +15161,21 @@
 
 
     // $ANTLR start "rule__MultiRule__Group__1__Impl"
-    // InternalHenshin_text.g:4662:1: rule__MultiRule__Group__1__Impl : ( ( rule__MultiRule__NameAssignment_1 ) ) ;
+    // InternalHenshin_text.g:4711:1: rule__MultiRule__Group__1__Impl : ( ( rule__MultiRule__NameAssignment_1 ) ) ;
     public final void rule__MultiRule__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4666:1: ( ( ( rule__MultiRule__NameAssignment_1 ) ) )
-            // InternalHenshin_text.g:4667:1: ( ( rule__MultiRule__NameAssignment_1 ) )
+            // InternalHenshin_text.g:4715:1: ( ( ( rule__MultiRule__NameAssignment_1 ) ) )
+            // InternalHenshin_text.g:4716:1: ( ( rule__MultiRule__NameAssignment_1 ) )
             {
-            // InternalHenshin_text.g:4667:1: ( ( rule__MultiRule__NameAssignment_1 ) )
-            // InternalHenshin_text.g:4668:2: ( rule__MultiRule__NameAssignment_1 )
+            // InternalHenshin_text.g:4716:1: ( ( rule__MultiRule__NameAssignment_1 ) )
+            // InternalHenshin_text.g:4717:2: ( rule__MultiRule__NameAssignment_1 )
             {
              before(grammarAccess.getMultiRuleAccess().getNameAssignment_1()); 
-            // InternalHenshin_text.g:4669:2: ( rule__MultiRule__NameAssignment_1 )
-            // InternalHenshin_text.g:4669:3: rule__MultiRule__NameAssignment_1
+            // InternalHenshin_text.g:4718:2: ( rule__MultiRule__NameAssignment_1 )
+            // InternalHenshin_text.g:4718:3: rule__MultiRule__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__MultiRule__NameAssignment_1();
@@ -15018,14 +15208,14 @@
 
 
     // $ANTLR start "rule__MultiRule__Group__2"
-    // InternalHenshin_text.g:4677:1: rule__MultiRule__Group__2 : rule__MultiRule__Group__2__Impl rule__MultiRule__Group__3 ;
+    // InternalHenshin_text.g:4726:1: rule__MultiRule__Group__2 : rule__MultiRule__Group__2__Impl rule__MultiRule__Group__3 ;
     public final void rule__MultiRule__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4681:1: ( rule__MultiRule__Group__2__Impl rule__MultiRule__Group__3 )
-            // InternalHenshin_text.g:4682:2: rule__MultiRule__Group__2__Impl rule__MultiRule__Group__3
+            // InternalHenshin_text.g:4730:1: ( rule__MultiRule__Group__2__Impl rule__MultiRule__Group__3 )
+            // InternalHenshin_text.g:4731:2: rule__MultiRule__Group__2__Impl rule__MultiRule__Group__3
             {
             pushFollow(FOLLOW_13);
             rule__MultiRule__Group__2__Impl();
@@ -15056,20 +15246,20 @@
 
 
     // $ANTLR start "rule__MultiRule__Group__2__Impl"
-    // InternalHenshin_text.g:4689:1: rule__MultiRule__Group__2__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:4738:1: rule__MultiRule__Group__2__Impl : ( '{' ) ;
     public final void rule__MultiRule__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4693:1: ( ( '{' ) )
-            // InternalHenshin_text.g:4694:1: ( '{' )
+            // InternalHenshin_text.g:4742:1: ( ( '{' ) )
+            // InternalHenshin_text.g:4743:1: ( '{' )
             {
-            // InternalHenshin_text.g:4694:1: ( '{' )
-            // InternalHenshin_text.g:4695:2: '{'
+            // InternalHenshin_text.g:4743:1: ( '{' )
+            // InternalHenshin_text.g:4744:2: '{'
             {
              before(grammarAccess.getMultiRuleAccess().getLeftCurlyBracketKeyword_2()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getMultiRuleAccess().getLeftCurlyBracketKeyword_2()); 
 
             }
@@ -15093,14 +15283,14 @@
 
 
     // $ANTLR start "rule__MultiRule__Group__3"
-    // InternalHenshin_text.g:4704:1: rule__MultiRule__Group__3 : rule__MultiRule__Group__3__Impl rule__MultiRule__Group__4 ;
+    // InternalHenshin_text.g:4753:1: rule__MultiRule__Group__3 : rule__MultiRule__Group__3__Impl rule__MultiRule__Group__4 ;
     public final void rule__MultiRule__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4708:1: ( rule__MultiRule__Group__3__Impl rule__MultiRule__Group__4 )
-            // InternalHenshin_text.g:4709:2: rule__MultiRule__Group__3__Impl rule__MultiRule__Group__4
+            // InternalHenshin_text.g:4757:1: ( rule__MultiRule__Group__3__Impl rule__MultiRule__Group__4 )
+            // InternalHenshin_text.g:4758:2: rule__MultiRule__Group__3__Impl rule__MultiRule__Group__4
             {
             pushFollow(FOLLOW_14);
             rule__MultiRule__Group__3__Impl();
@@ -15131,24 +15321,24 @@
 
 
     // $ANTLR start "rule__MultiRule__Group__3__Impl"
-    // InternalHenshin_text.g:4716:1: rule__MultiRule__Group__3__Impl : ( ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) ) ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* ) ) ;
+    // InternalHenshin_text.g:4765:1: rule__MultiRule__Group__3__Impl : ( ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) ) ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* ) ) ;
     public final void rule__MultiRule__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4720:1: ( ( ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) ) ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* ) ) )
-            // InternalHenshin_text.g:4721:1: ( ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) ) ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* ) )
+            // InternalHenshin_text.g:4769:1: ( ( ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) ) ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* ) ) )
+            // InternalHenshin_text.g:4770:1: ( ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) ) ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* ) )
             {
-            // InternalHenshin_text.g:4721:1: ( ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) ) ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* ) )
-            // InternalHenshin_text.g:4722:2: ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) ) ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* )
+            // InternalHenshin_text.g:4770:1: ( ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) ) ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* ) )
+            // InternalHenshin_text.g:4771:2: ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) ) ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* )
             {
-            // InternalHenshin_text.g:4722:2: ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) )
-            // InternalHenshin_text.g:4723:3: ( rule__MultiRule__MultiruleElementsAssignment_3 )
+            // InternalHenshin_text.g:4771:2: ( ( rule__MultiRule__MultiruleElementsAssignment_3 ) )
+            // InternalHenshin_text.g:4772:3: ( rule__MultiRule__MultiruleElementsAssignment_3 )
             {
              before(grammarAccess.getMultiRuleAccess().getMultiruleElementsAssignment_3()); 
-            // InternalHenshin_text.g:4724:3: ( rule__MultiRule__MultiruleElementsAssignment_3 )
-            // InternalHenshin_text.g:4724:4: rule__MultiRule__MultiruleElementsAssignment_3
+            // InternalHenshin_text.g:4773:3: ( rule__MultiRule__MultiruleElementsAssignment_3 )
+            // InternalHenshin_text.g:4773:4: rule__MultiRule__MultiruleElementsAssignment_3
             {
             pushFollow(FOLLOW_15);
             rule__MultiRule__MultiruleElementsAssignment_3();
@@ -15162,24 +15352,24 @@
 
             }
 
-            // InternalHenshin_text.g:4727:2: ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* )
-            // InternalHenshin_text.g:4728:3: ( rule__MultiRule__MultiruleElementsAssignment_3 )*
+            // InternalHenshin_text.g:4776:2: ( ( rule__MultiRule__MultiruleElementsAssignment_3 )* )
+            // InternalHenshin_text.g:4777:3: ( rule__MultiRule__MultiruleElementsAssignment_3 )*
             {
              before(grammarAccess.getMultiRuleAccess().getMultiruleElementsAssignment_3()); 
-            // InternalHenshin_text.g:4729:3: ( rule__MultiRule__MultiruleElementsAssignment_3 )*
-            loop40:
+            // InternalHenshin_text.g:4778:3: ( rule__MultiRule__MultiruleElementsAssignment_3 )*
+            loop41:
             do {
-                int alt40=2;
-                int LA40_0 = input.LA(1);
+                int alt41=2;
+                int LA41_0 = input.LA(1);
 
-                if ( ((LA40_0>=72 && LA40_0<=75)||LA40_0==78) ) {
-                    alt40=1;
+                if ( ((LA41_0>=76 && LA41_0<=79)||LA41_0==82) ) {
+                    alt41=1;
                 }
 
 
-                switch (alt40) {
+                switch (alt41) {
             	case 1 :
-            	    // InternalHenshin_text.g:4729:4: rule__MultiRule__MultiruleElementsAssignment_3
+            	    // InternalHenshin_text.g:4778:4: rule__MultiRule__MultiruleElementsAssignment_3
             	    {
             	    pushFollow(FOLLOW_15);
             	    rule__MultiRule__MultiruleElementsAssignment_3();
@@ -15191,7 +15381,7 @@
             	    break;
 
             	default :
-            	    break loop40;
+            	    break loop41;
                 }
             } while (true);
 
@@ -15221,14 +15411,14 @@
 
 
     // $ANTLR start "rule__MultiRule__Group__4"
-    // InternalHenshin_text.g:4738:1: rule__MultiRule__Group__4 : rule__MultiRule__Group__4__Impl ;
+    // InternalHenshin_text.g:4787:1: rule__MultiRule__Group__4 : rule__MultiRule__Group__4__Impl ;
     public final void rule__MultiRule__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4742:1: ( rule__MultiRule__Group__4__Impl )
-            // InternalHenshin_text.g:4743:2: rule__MultiRule__Group__4__Impl
+            // InternalHenshin_text.g:4791:1: ( rule__MultiRule__Group__4__Impl )
+            // InternalHenshin_text.g:4792:2: rule__MultiRule__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__MultiRule__Group__4__Impl();
@@ -15254,20 +15444,20 @@
 
 
     // $ANTLR start "rule__MultiRule__Group__4__Impl"
-    // InternalHenshin_text.g:4749:1: rule__MultiRule__Group__4__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:4798:1: rule__MultiRule__Group__4__Impl : ( '}' ) ;
     public final void rule__MultiRule__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4753:1: ( ( '}' ) )
-            // InternalHenshin_text.g:4754:1: ( '}' )
+            // InternalHenshin_text.g:4802:1: ( ( '}' ) )
+            // InternalHenshin_text.g:4803:1: ( '}' )
             {
-            // InternalHenshin_text.g:4754:1: ( '}' )
-            // InternalHenshin_text.g:4755:2: '}'
+            // InternalHenshin_text.g:4803:1: ( '}' )
+            // InternalHenshin_text.g:4804:2: '}'
             {
              before(grammarAccess.getMultiRuleAccess().getRightCurlyBracketKeyword_4()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getMultiRuleAccess().getRightCurlyBracketKeyword_4()); 
 
             }
@@ -15291,14 +15481,14 @@
 
 
     // $ANTLR start "rule__Formula__Group__0"
-    // InternalHenshin_text.g:4765:1: rule__Formula__Group__0 : rule__Formula__Group__0__Impl rule__Formula__Group__1 ;
+    // InternalHenshin_text.g:4814:1: rule__Formula__Group__0 : rule__Formula__Group__0__Impl rule__Formula__Group__1 ;
     public final void rule__Formula__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4769:1: ( rule__Formula__Group__0__Impl rule__Formula__Group__1 )
-            // InternalHenshin_text.g:4770:2: rule__Formula__Group__0__Impl rule__Formula__Group__1
+            // InternalHenshin_text.g:4818:1: ( rule__Formula__Group__0__Impl rule__Formula__Group__1 )
+            // InternalHenshin_text.g:4819:2: rule__Formula__Group__0__Impl rule__Formula__Group__1
             {
             pushFollow(FOLLOW_12);
             rule__Formula__Group__0__Impl();
@@ -15329,20 +15519,20 @@
 
 
     // $ANTLR start "rule__Formula__Group__0__Impl"
-    // InternalHenshin_text.g:4777:1: rule__Formula__Group__0__Impl : ( 'matchingFormula' ) ;
+    // InternalHenshin_text.g:4826:1: rule__Formula__Group__0__Impl : ( 'matchingFormula' ) ;
     public final void rule__Formula__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4781:1: ( ( 'matchingFormula' ) )
-            // InternalHenshin_text.g:4782:1: ( 'matchingFormula' )
+            // InternalHenshin_text.g:4830:1: ( ( 'matchingFormula' ) )
+            // InternalHenshin_text.g:4831:1: ( 'matchingFormula' )
             {
-            // InternalHenshin_text.g:4782:1: ( 'matchingFormula' )
-            // InternalHenshin_text.g:4783:2: 'matchingFormula'
+            // InternalHenshin_text.g:4831:1: ( 'matchingFormula' )
+            // InternalHenshin_text.g:4832:2: 'matchingFormula'
             {
              before(grammarAccess.getFormulaAccess().getMatchingFormulaKeyword_0()); 
-            match(input,86,FOLLOW_2); 
+            match(input,90,FOLLOW_2); 
              after(grammarAccess.getFormulaAccess().getMatchingFormulaKeyword_0()); 
 
             }
@@ -15366,16 +15556,16 @@
 
 
     // $ANTLR start "rule__Formula__Group__1"
-    // InternalHenshin_text.g:4792:1: rule__Formula__Group__1 : rule__Formula__Group__1__Impl rule__Formula__Group__2 ;
+    // InternalHenshin_text.g:4841:1: rule__Formula__Group__1 : rule__Formula__Group__1__Impl rule__Formula__Group__2 ;
     public final void rule__Formula__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4796:1: ( rule__Formula__Group__1__Impl rule__Formula__Group__2 )
-            // InternalHenshin_text.g:4797:2: rule__Formula__Group__1__Impl rule__Formula__Group__2
+            // InternalHenshin_text.g:4845:1: ( rule__Formula__Group__1__Impl rule__Formula__Group__2 )
+            // InternalHenshin_text.g:4846:2: rule__Formula__Group__1__Impl rule__Formula__Group__2
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_34);
             rule__Formula__Group__1__Impl();
 
             state._fsp--;
@@ -15404,20 +15594,20 @@
 
 
     // $ANTLR start "rule__Formula__Group__1__Impl"
-    // InternalHenshin_text.g:4804:1: rule__Formula__Group__1__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:4853:1: rule__Formula__Group__1__Impl : ( '{' ) ;
     public final void rule__Formula__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4808:1: ( ( '{' ) )
-            // InternalHenshin_text.g:4809:1: ( '{' )
+            // InternalHenshin_text.g:4857:1: ( ( '{' ) )
+            // InternalHenshin_text.g:4858:1: ( '{' )
             {
-            // InternalHenshin_text.g:4809:1: ( '{' )
-            // InternalHenshin_text.g:4810:2: '{'
+            // InternalHenshin_text.g:4858:1: ( '{' )
+            // InternalHenshin_text.g:4859:2: '{'
             {
              before(grammarAccess.getFormulaAccess().getLeftCurlyBracketKeyword_1()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getFormulaAccess().getLeftCurlyBracketKeyword_1()); 
 
             }
@@ -15441,16 +15631,16 @@
 
 
     // $ANTLR start "rule__Formula__Group__2"
-    // InternalHenshin_text.g:4819:1: rule__Formula__Group__2 : rule__Formula__Group__2__Impl rule__Formula__Group__3 ;
+    // InternalHenshin_text.g:4868:1: rule__Formula__Group__2 : rule__Formula__Group__2__Impl rule__Formula__Group__3 ;
     public final void rule__Formula__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4823:1: ( rule__Formula__Group__2__Impl rule__Formula__Group__3 )
-            // InternalHenshin_text.g:4824:2: rule__Formula__Group__2__Impl rule__Formula__Group__3
+            // InternalHenshin_text.g:4872:1: ( rule__Formula__Group__2__Impl rule__Formula__Group__3 )
+            // InternalHenshin_text.g:4873:2: rule__Formula__Group__2__Impl rule__Formula__Group__3
             {
-            pushFollow(FOLLOW_34);
+            pushFollow(FOLLOW_35);
             rule__Formula__Group__2__Impl();
 
             state._fsp--;
@@ -15479,20 +15669,20 @@
 
 
     // $ANTLR start "rule__Formula__Group__2__Impl"
-    // InternalHenshin_text.g:4831:1: rule__Formula__Group__2__Impl : ( 'formula' ) ;
+    // InternalHenshin_text.g:4880:1: rule__Formula__Group__2__Impl : ( 'formula' ) ;
     public final void rule__Formula__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4835:1: ( ( 'formula' ) )
-            // InternalHenshin_text.g:4836:1: ( 'formula' )
+            // InternalHenshin_text.g:4884:1: ( ( 'formula' ) )
+            // InternalHenshin_text.g:4885:1: ( 'formula' )
             {
-            // InternalHenshin_text.g:4836:1: ( 'formula' )
-            // InternalHenshin_text.g:4837:2: 'formula'
+            // InternalHenshin_text.g:4885:1: ( 'formula' )
+            // InternalHenshin_text.g:4886:2: 'formula'
             {
              before(grammarAccess.getFormulaAccess().getFormulaKeyword_2()); 
-            match(input,87,FOLLOW_2); 
+            match(input,91,FOLLOW_2); 
              after(grammarAccess.getFormulaAccess().getFormulaKeyword_2()); 
 
             }
@@ -15516,16 +15706,16 @@
 
 
     // $ANTLR start "rule__Formula__Group__3"
-    // InternalHenshin_text.g:4846:1: rule__Formula__Group__3 : rule__Formula__Group__3__Impl rule__Formula__Group__4 ;
+    // InternalHenshin_text.g:4895:1: rule__Formula__Group__3 : rule__Formula__Group__3__Impl rule__Formula__Group__4 ;
     public final void rule__Formula__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4850:1: ( rule__Formula__Group__3__Impl rule__Formula__Group__4 )
-            // InternalHenshin_text.g:4851:2: rule__Formula__Group__3__Impl rule__Formula__Group__4
+            // InternalHenshin_text.g:4899:1: ( rule__Formula__Group__3__Impl rule__Formula__Group__4 )
+            // InternalHenshin_text.g:4900:2: rule__Formula__Group__3__Impl rule__Formula__Group__4
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_36);
             rule__Formula__Group__3__Impl();
 
             state._fsp--;
@@ -15554,21 +15744,21 @@
 
 
     // $ANTLR start "rule__Formula__Group__3__Impl"
-    // InternalHenshin_text.g:4858:1: rule__Formula__Group__3__Impl : ( ( rule__Formula__FormulaAssignment_3 ) ) ;
+    // InternalHenshin_text.g:4907:1: rule__Formula__Group__3__Impl : ( ( rule__Formula__FormulaAssignment_3 ) ) ;
     public final void rule__Formula__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4862:1: ( ( ( rule__Formula__FormulaAssignment_3 ) ) )
-            // InternalHenshin_text.g:4863:1: ( ( rule__Formula__FormulaAssignment_3 ) )
+            // InternalHenshin_text.g:4911:1: ( ( ( rule__Formula__FormulaAssignment_3 ) ) )
+            // InternalHenshin_text.g:4912:1: ( ( rule__Formula__FormulaAssignment_3 ) )
             {
-            // InternalHenshin_text.g:4863:1: ( ( rule__Formula__FormulaAssignment_3 ) )
-            // InternalHenshin_text.g:4864:2: ( rule__Formula__FormulaAssignment_3 )
+            // InternalHenshin_text.g:4912:1: ( ( rule__Formula__FormulaAssignment_3 ) )
+            // InternalHenshin_text.g:4913:2: ( rule__Formula__FormulaAssignment_3 )
             {
              before(grammarAccess.getFormulaAccess().getFormulaAssignment_3()); 
-            // InternalHenshin_text.g:4865:2: ( rule__Formula__FormulaAssignment_3 )
-            // InternalHenshin_text.g:4865:3: rule__Formula__FormulaAssignment_3
+            // InternalHenshin_text.g:4914:2: ( rule__Formula__FormulaAssignment_3 )
+            // InternalHenshin_text.g:4914:3: rule__Formula__FormulaAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__Formula__FormulaAssignment_3();
@@ -15601,14 +15791,14 @@
 
 
     // $ANTLR start "rule__Formula__Group__4"
-    // InternalHenshin_text.g:4873:1: rule__Formula__Group__4 : rule__Formula__Group__4__Impl rule__Formula__Group__5 ;
+    // InternalHenshin_text.g:4922:1: rule__Formula__Group__4 : rule__Formula__Group__4__Impl rule__Formula__Group__5 ;
     public final void rule__Formula__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4877:1: ( rule__Formula__Group__4__Impl rule__Formula__Group__5 )
-            // InternalHenshin_text.g:4878:2: rule__Formula__Group__4__Impl rule__Formula__Group__5
+            // InternalHenshin_text.g:4926:1: ( rule__Formula__Group__4__Impl rule__Formula__Group__5 )
+            // InternalHenshin_text.g:4927:2: rule__Formula__Group__4__Impl rule__Formula__Group__5
             {
             pushFollow(FOLLOW_14);
             rule__Formula__Group__4__Impl();
@@ -15639,26 +15829,26 @@
 
 
     // $ANTLR start "rule__Formula__Group__4__Impl"
-    // InternalHenshin_text.g:4885:1: rule__Formula__Group__4__Impl : ( ( ( rule__Formula__ConditionGraphsAssignment_4 ) ) ( ( rule__Formula__ConditionGraphsAssignment_4 )* ) ) ;
+    // InternalHenshin_text.g:4934:1: rule__Formula__Group__4__Impl : ( ( ( rule__Formula__ConditionGraphsAssignment_4 ) ) ( ( rule__Formula__ConditionGraphsAssignment_4 )* ) ) ;
     public final void rule__Formula__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4889:1: ( ( ( ( rule__Formula__ConditionGraphsAssignment_4 ) ) ( ( rule__Formula__ConditionGraphsAssignment_4 )* ) ) )
-            // InternalHenshin_text.g:4890:1: ( ( ( rule__Formula__ConditionGraphsAssignment_4 ) ) ( ( rule__Formula__ConditionGraphsAssignment_4 )* ) )
+            // InternalHenshin_text.g:4938:1: ( ( ( ( rule__Formula__ConditionGraphsAssignment_4 ) ) ( ( rule__Formula__ConditionGraphsAssignment_4 )* ) ) )
+            // InternalHenshin_text.g:4939:1: ( ( ( rule__Formula__ConditionGraphsAssignment_4 ) ) ( ( rule__Formula__ConditionGraphsAssignment_4 )* ) )
             {
-            // InternalHenshin_text.g:4890:1: ( ( ( rule__Formula__ConditionGraphsAssignment_4 ) ) ( ( rule__Formula__ConditionGraphsAssignment_4 )* ) )
-            // InternalHenshin_text.g:4891:2: ( ( rule__Formula__ConditionGraphsAssignment_4 ) ) ( ( rule__Formula__ConditionGraphsAssignment_4 )* )
+            // InternalHenshin_text.g:4939:1: ( ( ( rule__Formula__ConditionGraphsAssignment_4 ) ) ( ( rule__Formula__ConditionGraphsAssignment_4 )* ) )
+            // InternalHenshin_text.g:4940:2: ( ( rule__Formula__ConditionGraphsAssignment_4 ) ) ( ( rule__Formula__ConditionGraphsAssignment_4 )* )
             {
-            // InternalHenshin_text.g:4891:2: ( ( rule__Formula__ConditionGraphsAssignment_4 ) )
-            // InternalHenshin_text.g:4892:3: ( rule__Formula__ConditionGraphsAssignment_4 )
+            // InternalHenshin_text.g:4940:2: ( ( rule__Formula__ConditionGraphsAssignment_4 ) )
+            // InternalHenshin_text.g:4941:3: ( rule__Formula__ConditionGraphsAssignment_4 )
             {
              before(grammarAccess.getFormulaAccess().getConditionGraphsAssignment_4()); 
-            // InternalHenshin_text.g:4893:3: ( rule__Formula__ConditionGraphsAssignment_4 )
-            // InternalHenshin_text.g:4893:4: rule__Formula__ConditionGraphsAssignment_4
+            // InternalHenshin_text.g:4942:3: ( rule__Formula__ConditionGraphsAssignment_4 )
+            // InternalHenshin_text.g:4942:4: rule__Formula__ConditionGraphsAssignment_4
             {
-            pushFollow(FOLLOW_36);
+            pushFollow(FOLLOW_37);
             rule__Formula__ConditionGraphsAssignment_4();
 
             state._fsp--;
@@ -15670,26 +15860,26 @@
 
             }
 
-            // InternalHenshin_text.g:4896:2: ( ( rule__Formula__ConditionGraphsAssignment_4 )* )
-            // InternalHenshin_text.g:4897:3: ( rule__Formula__ConditionGraphsAssignment_4 )*
+            // InternalHenshin_text.g:4945:2: ( ( rule__Formula__ConditionGraphsAssignment_4 )* )
+            // InternalHenshin_text.g:4946:3: ( rule__Formula__ConditionGraphsAssignment_4 )*
             {
              before(grammarAccess.getFormulaAccess().getConditionGraphsAssignment_4()); 
-            // InternalHenshin_text.g:4898:3: ( rule__Formula__ConditionGraphsAssignment_4 )*
-            loop41:
+            // InternalHenshin_text.g:4947:3: ( rule__Formula__ConditionGraphsAssignment_4 )*
+            loop42:
             do {
-                int alt41=2;
-                int LA41_0 = input.LA(1);
+                int alt42=2;
+                int LA42_0 = input.LA(1);
 
-                if ( (LA41_0==90) ) {
-                    alt41=1;
+                if ( (LA42_0==94) ) {
+                    alt42=1;
                 }
 
 
-                switch (alt41) {
+                switch (alt42) {
             	case 1 :
-            	    // InternalHenshin_text.g:4898:4: rule__Formula__ConditionGraphsAssignment_4
+            	    // InternalHenshin_text.g:4947:4: rule__Formula__ConditionGraphsAssignment_4
             	    {
-            	    pushFollow(FOLLOW_36);
+            	    pushFollow(FOLLOW_37);
             	    rule__Formula__ConditionGraphsAssignment_4();
 
             	    state._fsp--;
@@ -15699,7 +15889,7 @@
             	    break;
 
             	default :
-            	    break loop41;
+            	    break loop42;
                 }
             } while (true);
 
@@ -15729,14 +15919,14 @@
 
 
     // $ANTLR start "rule__Formula__Group__5"
-    // InternalHenshin_text.g:4907:1: rule__Formula__Group__5 : rule__Formula__Group__5__Impl ;
+    // InternalHenshin_text.g:4956:1: rule__Formula__Group__5 : rule__Formula__Group__5__Impl ;
     public final void rule__Formula__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4911:1: ( rule__Formula__Group__5__Impl )
-            // InternalHenshin_text.g:4912:2: rule__Formula__Group__5__Impl
+            // InternalHenshin_text.g:4960:1: ( rule__Formula__Group__5__Impl )
+            // InternalHenshin_text.g:4961:2: rule__Formula__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Formula__Group__5__Impl();
@@ -15762,20 +15952,20 @@
 
 
     // $ANTLR start "rule__Formula__Group__5__Impl"
-    // InternalHenshin_text.g:4918:1: rule__Formula__Group__5__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:4967:1: rule__Formula__Group__5__Impl : ( '}' ) ;
     public final void rule__Formula__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4922:1: ( ( '}' ) )
-            // InternalHenshin_text.g:4923:1: ( '}' )
+            // InternalHenshin_text.g:4971:1: ( ( '}' ) )
+            // InternalHenshin_text.g:4972:1: ( '}' )
             {
-            // InternalHenshin_text.g:4923:1: ( '}' )
-            // InternalHenshin_text.g:4924:2: '}'
+            // InternalHenshin_text.g:4972:1: ( '}' )
+            // InternalHenshin_text.g:4973:2: '}'
             {
              before(grammarAccess.getFormulaAccess().getRightCurlyBracketKeyword_5()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getFormulaAccess().getRightCurlyBracketKeyword_5()); 
 
             }
@@ -15799,16 +15989,16 @@
 
 
     // $ANTLR start "rule__ORorXOR__Group__0"
-    // InternalHenshin_text.g:4934:1: rule__ORorXOR__Group__0 : rule__ORorXOR__Group__0__Impl rule__ORorXOR__Group__1 ;
+    // InternalHenshin_text.g:4983:1: rule__ORorXOR__Group__0 : rule__ORorXOR__Group__0__Impl rule__ORorXOR__Group__1 ;
     public final void rule__ORorXOR__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4938:1: ( rule__ORorXOR__Group__0__Impl rule__ORorXOR__Group__1 )
-            // InternalHenshin_text.g:4939:2: rule__ORorXOR__Group__0__Impl rule__ORorXOR__Group__1
+            // InternalHenshin_text.g:4987:1: ( rule__ORorXOR__Group__0__Impl rule__ORorXOR__Group__1 )
+            // InternalHenshin_text.g:4988:2: rule__ORorXOR__Group__0__Impl rule__ORorXOR__Group__1
             {
-            pushFollow(FOLLOW_37);
+            pushFollow(FOLLOW_38);
             rule__ORorXOR__Group__0__Impl();
 
             state._fsp--;
@@ -15837,17 +16027,17 @@
 
 
     // $ANTLR start "rule__ORorXOR__Group__0__Impl"
-    // InternalHenshin_text.g:4946:1: rule__ORorXOR__Group__0__Impl : ( ruleAND ) ;
+    // InternalHenshin_text.g:4995:1: rule__ORorXOR__Group__0__Impl : ( ruleAND ) ;
     public final void rule__ORorXOR__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4950:1: ( ( ruleAND ) )
-            // InternalHenshin_text.g:4951:1: ( ruleAND )
+            // InternalHenshin_text.g:4999:1: ( ( ruleAND ) )
+            // InternalHenshin_text.g:5000:1: ( ruleAND )
             {
-            // InternalHenshin_text.g:4951:1: ( ruleAND )
-            // InternalHenshin_text.g:4952:2: ruleAND
+            // InternalHenshin_text.g:5000:1: ( ruleAND )
+            // InternalHenshin_text.g:5001:2: ruleAND
             {
              before(grammarAccess.getORorXORAccess().getANDParserRuleCall_0()); 
             pushFollow(FOLLOW_2);
@@ -15878,14 +16068,14 @@
 
 
     // $ANTLR start "rule__ORorXOR__Group__1"
-    // InternalHenshin_text.g:4961:1: rule__ORorXOR__Group__1 : rule__ORorXOR__Group__1__Impl ;
+    // InternalHenshin_text.g:5010:1: rule__ORorXOR__Group__1 : rule__ORorXOR__Group__1__Impl ;
     public final void rule__ORorXOR__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4965:1: ( rule__ORorXOR__Group__1__Impl )
-            // InternalHenshin_text.g:4966:2: rule__ORorXOR__Group__1__Impl
+            // InternalHenshin_text.g:5014:1: ( rule__ORorXOR__Group__1__Impl )
+            // InternalHenshin_text.g:5015:2: rule__ORorXOR__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ORorXOR__Group__1__Impl();
@@ -15911,35 +16101,35 @@
 
 
     // $ANTLR start "rule__ORorXOR__Group__1__Impl"
-    // InternalHenshin_text.g:4972:1: rule__ORorXOR__Group__1__Impl : ( ( rule__ORorXOR__Group_1__0 )* ) ;
+    // InternalHenshin_text.g:5021:1: rule__ORorXOR__Group__1__Impl : ( ( rule__ORorXOR__Group_1__0 )* ) ;
     public final void rule__ORorXOR__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4976:1: ( ( ( rule__ORorXOR__Group_1__0 )* ) )
-            // InternalHenshin_text.g:4977:1: ( ( rule__ORorXOR__Group_1__0 )* )
+            // InternalHenshin_text.g:5025:1: ( ( ( rule__ORorXOR__Group_1__0 )* ) )
+            // InternalHenshin_text.g:5026:1: ( ( rule__ORorXOR__Group_1__0 )* )
             {
-            // InternalHenshin_text.g:4977:1: ( ( rule__ORorXOR__Group_1__0 )* )
-            // InternalHenshin_text.g:4978:2: ( rule__ORorXOR__Group_1__0 )*
+            // InternalHenshin_text.g:5026:1: ( ( rule__ORorXOR__Group_1__0 )* )
+            // InternalHenshin_text.g:5027:2: ( rule__ORorXOR__Group_1__0 )*
             {
              before(grammarAccess.getORorXORAccess().getGroup_1()); 
-            // InternalHenshin_text.g:4979:2: ( rule__ORorXOR__Group_1__0 )*
-            loop42:
+            // InternalHenshin_text.g:5028:2: ( rule__ORorXOR__Group_1__0 )*
+            loop43:
             do {
-                int alt42=2;
-                int LA42_0 = input.LA(1);
+                int alt43=2;
+                int LA43_0 = input.LA(1);
 
-                if ( ((LA42_0>=18 && LA42_0<=19)) ) {
-                    alt42=1;
+                if ( ((LA43_0>=18 && LA43_0<=19)) ) {
+                    alt43=1;
                 }
 
 
-                switch (alt42) {
+                switch (alt43) {
             	case 1 :
-            	    // InternalHenshin_text.g:4979:3: rule__ORorXOR__Group_1__0
+            	    // InternalHenshin_text.g:5028:3: rule__ORorXOR__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_38);
+            	    pushFollow(FOLLOW_39);
             	    rule__ORorXOR__Group_1__0();
 
             	    state._fsp--;
@@ -15949,7 +16139,7 @@
             	    break;
 
             	default :
-            	    break loop42;
+            	    break loop43;
                 }
             } while (true);
 
@@ -15976,16 +16166,16 @@
 
 
     // $ANTLR start "rule__ORorXOR__Group_1__0"
-    // InternalHenshin_text.g:4988:1: rule__ORorXOR__Group_1__0 : rule__ORorXOR__Group_1__0__Impl rule__ORorXOR__Group_1__1 ;
+    // InternalHenshin_text.g:5037:1: rule__ORorXOR__Group_1__0 : rule__ORorXOR__Group_1__0__Impl rule__ORorXOR__Group_1__1 ;
     public final void rule__ORorXOR__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:4992:1: ( rule__ORorXOR__Group_1__0__Impl rule__ORorXOR__Group_1__1 )
-            // InternalHenshin_text.g:4993:2: rule__ORorXOR__Group_1__0__Impl rule__ORorXOR__Group_1__1
+            // InternalHenshin_text.g:5041:1: ( rule__ORorXOR__Group_1__0__Impl rule__ORorXOR__Group_1__1 )
+            // InternalHenshin_text.g:5042:2: rule__ORorXOR__Group_1__0__Impl rule__ORorXOR__Group_1__1
             {
-            pushFollow(FOLLOW_37);
+            pushFollow(FOLLOW_38);
             rule__ORorXOR__Group_1__0__Impl();
 
             state._fsp--;
@@ -16014,21 +16204,21 @@
 
 
     // $ANTLR start "rule__ORorXOR__Group_1__0__Impl"
-    // InternalHenshin_text.g:5000:1: rule__ORorXOR__Group_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:5049:1: rule__ORorXOR__Group_1__0__Impl : ( () ) ;
     public final void rule__ORorXOR__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5004:1: ( ( () ) )
-            // InternalHenshin_text.g:5005:1: ( () )
+            // InternalHenshin_text.g:5053:1: ( ( () ) )
+            // InternalHenshin_text.g:5054:1: ( () )
             {
-            // InternalHenshin_text.g:5005:1: ( () )
-            // InternalHenshin_text.g:5006:2: ()
+            // InternalHenshin_text.g:5054:1: ( () )
+            // InternalHenshin_text.g:5055:2: ()
             {
              before(grammarAccess.getORorXORAccess().getORorXORLeftAction_1_0()); 
-            // InternalHenshin_text.g:5007:2: ()
-            // InternalHenshin_text.g:5007:3: 
+            // InternalHenshin_text.g:5056:2: ()
+            // InternalHenshin_text.g:5056:3: 
             {
             }
 
@@ -16051,16 +16241,16 @@
 
 
     // $ANTLR start "rule__ORorXOR__Group_1__1"
-    // InternalHenshin_text.g:5015:1: rule__ORorXOR__Group_1__1 : rule__ORorXOR__Group_1__1__Impl rule__ORorXOR__Group_1__2 ;
+    // InternalHenshin_text.g:5064:1: rule__ORorXOR__Group_1__1 : rule__ORorXOR__Group_1__1__Impl rule__ORorXOR__Group_1__2 ;
     public final void rule__ORorXOR__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5019:1: ( rule__ORorXOR__Group_1__1__Impl rule__ORorXOR__Group_1__2 )
-            // InternalHenshin_text.g:5020:2: rule__ORorXOR__Group_1__1__Impl rule__ORorXOR__Group_1__2
+            // InternalHenshin_text.g:5068:1: ( rule__ORorXOR__Group_1__1__Impl rule__ORorXOR__Group_1__2 )
+            // InternalHenshin_text.g:5069:2: rule__ORorXOR__Group_1__1__Impl rule__ORorXOR__Group_1__2
             {
-            pushFollow(FOLLOW_34);
+            pushFollow(FOLLOW_35);
             rule__ORorXOR__Group_1__1__Impl();
 
             state._fsp--;
@@ -16089,21 +16279,21 @@
 
 
     // $ANTLR start "rule__ORorXOR__Group_1__1__Impl"
-    // InternalHenshin_text.g:5027:1: rule__ORorXOR__Group_1__1__Impl : ( ( rule__ORorXOR__OpAssignment_1_1 ) ) ;
+    // InternalHenshin_text.g:5076:1: rule__ORorXOR__Group_1__1__Impl : ( ( rule__ORorXOR__OpAssignment_1_1 ) ) ;
     public final void rule__ORorXOR__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5031:1: ( ( ( rule__ORorXOR__OpAssignment_1_1 ) ) )
-            // InternalHenshin_text.g:5032:1: ( ( rule__ORorXOR__OpAssignment_1_1 ) )
+            // InternalHenshin_text.g:5080:1: ( ( ( rule__ORorXOR__OpAssignment_1_1 ) ) )
+            // InternalHenshin_text.g:5081:1: ( ( rule__ORorXOR__OpAssignment_1_1 ) )
             {
-            // InternalHenshin_text.g:5032:1: ( ( rule__ORorXOR__OpAssignment_1_1 ) )
-            // InternalHenshin_text.g:5033:2: ( rule__ORorXOR__OpAssignment_1_1 )
+            // InternalHenshin_text.g:5081:1: ( ( rule__ORorXOR__OpAssignment_1_1 ) )
+            // InternalHenshin_text.g:5082:2: ( rule__ORorXOR__OpAssignment_1_1 )
             {
              before(grammarAccess.getORorXORAccess().getOpAssignment_1_1()); 
-            // InternalHenshin_text.g:5034:2: ( rule__ORorXOR__OpAssignment_1_1 )
-            // InternalHenshin_text.g:5034:3: rule__ORorXOR__OpAssignment_1_1
+            // InternalHenshin_text.g:5083:2: ( rule__ORorXOR__OpAssignment_1_1 )
+            // InternalHenshin_text.g:5083:3: rule__ORorXOR__OpAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__ORorXOR__OpAssignment_1_1();
@@ -16136,14 +16326,14 @@
 
 
     // $ANTLR start "rule__ORorXOR__Group_1__2"
-    // InternalHenshin_text.g:5042:1: rule__ORorXOR__Group_1__2 : rule__ORorXOR__Group_1__2__Impl ;
+    // InternalHenshin_text.g:5091:1: rule__ORorXOR__Group_1__2 : rule__ORorXOR__Group_1__2__Impl ;
     public final void rule__ORorXOR__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5046:1: ( rule__ORorXOR__Group_1__2__Impl )
-            // InternalHenshin_text.g:5047:2: rule__ORorXOR__Group_1__2__Impl
+            // InternalHenshin_text.g:5095:1: ( rule__ORorXOR__Group_1__2__Impl )
+            // InternalHenshin_text.g:5096:2: rule__ORorXOR__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ORorXOR__Group_1__2__Impl();
@@ -16169,21 +16359,21 @@
 
 
     // $ANTLR start "rule__ORorXOR__Group_1__2__Impl"
-    // InternalHenshin_text.g:5053:1: rule__ORorXOR__Group_1__2__Impl : ( ( rule__ORorXOR__RightAssignment_1_2 ) ) ;
+    // InternalHenshin_text.g:5102:1: rule__ORorXOR__Group_1__2__Impl : ( ( rule__ORorXOR__RightAssignment_1_2 ) ) ;
     public final void rule__ORorXOR__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5057:1: ( ( ( rule__ORorXOR__RightAssignment_1_2 ) ) )
-            // InternalHenshin_text.g:5058:1: ( ( rule__ORorXOR__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:5106:1: ( ( ( rule__ORorXOR__RightAssignment_1_2 ) ) )
+            // InternalHenshin_text.g:5107:1: ( ( rule__ORorXOR__RightAssignment_1_2 ) )
             {
-            // InternalHenshin_text.g:5058:1: ( ( rule__ORorXOR__RightAssignment_1_2 ) )
-            // InternalHenshin_text.g:5059:2: ( rule__ORorXOR__RightAssignment_1_2 )
+            // InternalHenshin_text.g:5107:1: ( ( rule__ORorXOR__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:5108:2: ( rule__ORorXOR__RightAssignment_1_2 )
             {
              before(grammarAccess.getORorXORAccess().getRightAssignment_1_2()); 
-            // InternalHenshin_text.g:5060:2: ( rule__ORorXOR__RightAssignment_1_2 )
-            // InternalHenshin_text.g:5060:3: rule__ORorXOR__RightAssignment_1_2
+            // InternalHenshin_text.g:5109:2: ( rule__ORorXOR__RightAssignment_1_2 )
+            // InternalHenshin_text.g:5109:3: rule__ORorXOR__RightAssignment_1_2
             {
             pushFollow(FOLLOW_2);
             rule__ORorXOR__RightAssignment_1_2();
@@ -16216,16 +16406,16 @@
 
 
     // $ANTLR start "rule__AND__Group__0"
-    // InternalHenshin_text.g:5069:1: rule__AND__Group__0 : rule__AND__Group__0__Impl rule__AND__Group__1 ;
+    // InternalHenshin_text.g:5118:1: rule__AND__Group__0 : rule__AND__Group__0__Impl rule__AND__Group__1 ;
     public final void rule__AND__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5073:1: ( rule__AND__Group__0__Impl rule__AND__Group__1 )
-            // InternalHenshin_text.g:5074:2: rule__AND__Group__0__Impl rule__AND__Group__1
+            // InternalHenshin_text.g:5122:1: ( rule__AND__Group__0__Impl rule__AND__Group__1 )
+            // InternalHenshin_text.g:5123:2: rule__AND__Group__0__Impl rule__AND__Group__1
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_40);
             rule__AND__Group__0__Impl();
 
             state._fsp--;
@@ -16254,17 +16444,17 @@
 
 
     // $ANTLR start "rule__AND__Group__0__Impl"
-    // InternalHenshin_text.g:5081:1: rule__AND__Group__0__Impl : ( rulePrimary ) ;
+    // InternalHenshin_text.g:5130:1: rule__AND__Group__0__Impl : ( rulePrimary ) ;
     public final void rule__AND__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5085:1: ( ( rulePrimary ) )
-            // InternalHenshin_text.g:5086:1: ( rulePrimary )
+            // InternalHenshin_text.g:5134:1: ( ( rulePrimary ) )
+            // InternalHenshin_text.g:5135:1: ( rulePrimary )
             {
-            // InternalHenshin_text.g:5086:1: ( rulePrimary )
-            // InternalHenshin_text.g:5087:2: rulePrimary
+            // InternalHenshin_text.g:5135:1: ( rulePrimary )
+            // InternalHenshin_text.g:5136:2: rulePrimary
             {
              before(grammarAccess.getANDAccess().getPrimaryParserRuleCall_0()); 
             pushFollow(FOLLOW_2);
@@ -16295,14 +16485,14 @@
 
 
     // $ANTLR start "rule__AND__Group__1"
-    // InternalHenshin_text.g:5096:1: rule__AND__Group__1 : rule__AND__Group__1__Impl ;
+    // InternalHenshin_text.g:5145:1: rule__AND__Group__1 : rule__AND__Group__1__Impl ;
     public final void rule__AND__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5100:1: ( rule__AND__Group__1__Impl )
-            // InternalHenshin_text.g:5101:2: rule__AND__Group__1__Impl
+            // InternalHenshin_text.g:5149:1: ( rule__AND__Group__1__Impl )
+            // InternalHenshin_text.g:5150:2: rule__AND__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AND__Group__1__Impl();
@@ -16328,35 +16518,35 @@
 
 
     // $ANTLR start "rule__AND__Group__1__Impl"
-    // InternalHenshin_text.g:5107:1: rule__AND__Group__1__Impl : ( ( rule__AND__Group_1__0 )* ) ;
+    // InternalHenshin_text.g:5156:1: rule__AND__Group__1__Impl : ( ( rule__AND__Group_1__0 )* ) ;
     public final void rule__AND__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5111:1: ( ( ( rule__AND__Group_1__0 )* ) )
-            // InternalHenshin_text.g:5112:1: ( ( rule__AND__Group_1__0 )* )
+            // InternalHenshin_text.g:5160:1: ( ( ( rule__AND__Group_1__0 )* ) )
+            // InternalHenshin_text.g:5161:1: ( ( rule__AND__Group_1__0 )* )
             {
-            // InternalHenshin_text.g:5112:1: ( ( rule__AND__Group_1__0 )* )
-            // InternalHenshin_text.g:5113:2: ( rule__AND__Group_1__0 )*
+            // InternalHenshin_text.g:5161:1: ( ( rule__AND__Group_1__0 )* )
+            // InternalHenshin_text.g:5162:2: ( rule__AND__Group_1__0 )*
             {
              before(grammarAccess.getANDAccess().getGroup_1()); 
-            // InternalHenshin_text.g:5114:2: ( rule__AND__Group_1__0 )*
-            loop43:
+            // InternalHenshin_text.g:5163:2: ( rule__AND__Group_1__0 )*
+            loop44:
             do {
-                int alt43=2;
-                int LA43_0 = input.LA(1);
+                int alt44=2;
+                int LA44_0 = input.LA(1);
 
-                if ( (LA43_0==88) ) {
-                    alt43=1;
+                if ( (LA44_0==92) ) {
+                    alt44=1;
                 }
 
 
-                switch (alt43) {
+                switch (alt44) {
             	case 1 :
-            	    // InternalHenshin_text.g:5114:3: rule__AND__Group_1__0
+            	    // InternalHenshin_text.g:5163:3: rule__AND__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_40);
+            	    pushFollow(FOLLOW_41);
             	    rule__AND__Group_1__0();
 
             	    state._fsp--;
@@ -16366,7 +16556,7 @@
             	    break;
 
             	default :
-            	    break loop43;
+            	    break loop44;
                 }
             } while (true);
 
@@ -16393,16 +16583,16 @@
 
 
     // $ANTLR start "rule__AND__Group_1__0"
-    // InternalHenshin_text.g:5123:1: rule__AND__Group_1__0 : rule__AND__Group_1__0__Impl rule__AND__Group_1__1 ;
+    // InternalHenshin_text.g:5172:1: rule__AND__Group_1__0 : rule__AND__Group_1__0__Impl rule__AND__Group_1__1 ;
     public final void rule__AND__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5127:1: ( rule__AND__Group_1__0__Impl rule__AND__Group_1__1 )
-            // InternalHenshin_text.g:5128:2: rule__AND__Group_1__0__Impl rule__AND__Group_1__1
+            // InternalHenshin_text.g:5176:1: ( rule__AND__Group_1__0__Impl rule__AND__Group_1__1 )
+            // InternalHenshin_text.g:5177:2: rule__AND__Group_1__0__Impl rule__AND__Group_1__1
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_40);
             rule__AND__Group_1__0__Impl();
 
             state._fsp--;
@@ -16431,21 +16621,21 @@
 
 
     // $ANTLR start "rule__AND__Group_1__0__Impl"
-    // InternalHenshin_text.g:5135:1: rule__AND__Group_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:5184:1: rule__AND__Group_1__0__Impl : ( () ) ;
     public final void rule__AND__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5139:1: ( ( () ) )
-            // InternalHenshin_text.g:5140:1: ( () )
+            // InternalHenshin_text.g:5188:1: ( ( () ) )
+            // InternalHenshin_text.g:5189:1: ( () )
             {
-            // InternalHenshin_text.g:5140:1: ( () )
-            // InternalHenshin_text.g:5141:2: ()
+            // InternalHenshin_text.g:5189:1: ( () )
+            // InternalHenshin_text.g:5190:2: ()
             {
              before(grammarAccess.getANDAccess().getANDLeftAction_1_0()); 
-            // InternalHenshin_text.g:5142:2: ()
-            // InternalHenshin_text.g:5142:3: 
+            // InternalHenshin_text.g:5191:2: ()
+            // InternalHenshin_text.g:5191:3: 
             {
             }
 
@@ -16468,16 +16658,16 @@
 
 
     // $ANTLR start "rule__AND__Group_1__1"
-    // InternalHenshin_text.g:5150:1: rule__AND__Group_1__1 : rule__AND__Group_1__1__Impl rule__AND__Group_1__2 ;
+    // InternalHenshin_text.g:5199:1: rule__AND__Group_1__1 : rule__AND__Group_1__1__Impl rule__AND__Group_1__2 ;
     public final void rule__AND__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5154:1: ( rule__AND__Group_1__1__Impl rule__AND__Group_1__2 )
-            // InternalHenshin_text.g:5155:2: rule__AND__Group_1__1__Impl rule__AND__Group_1__2
+            // InternalHenshin_text.g:5203:1: ( rule__AND__Group_1__1__Impl rule__AND__Group_1__2 )
+            // InternalHenshin_text.g:5204:2: rule__AND__Group_1__1__Impl rule__AND__Group_1__2
             {
-            pushFollow(FOLLOW_34);
+            pushFollow(FOLLOW_35);
             rule__AND__Group_1__1__Impl();
 
             state._fsp--;
@@ -16506,20 +16696,20 @@
 
 
     // $ANTLR start "rule__AND__Group_1__1__Impl"
-    // InternalHenshin_text.g:5162:1: rule__AND__Group_1__1__Impl : ( 'AND' ) ;
+    // InternalHenshin_text.g:5211:1: rule__AND__Group_1__1__Impl : ( 'AND' ) ;
     public final void rule__AND__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5166:1: ( ( 'AND' ) )
-            // InternalHenshin_text.g:5167:1: ( 'AND' )
+            // InternalHenshin_text.g:5215:1: ( ( 'AND' ) )
+            // InternalHenshin_text.g:5216:1: ( 'AND' )
             {
-            // InternalHenshin_text.g:5167:1: ( 'AND' )
-            // InternalHenshin_text.g:5168:2: 'AND'
+            // InternalHenshin_text.g:5216:1: ( 'AND' )
+            // InternalHenshin_text.g:5217:2: 'AND'
             {
              before(grammarAccess.getANDAccess().getANDKeyword_1_1()); 
-            match(input,88,FOLLOW_2); 
+            match(input,92,FOLLOW_2); 
              after(grammarAccess.getANDAccess().getANDKeyword_1_1()); 
 
             }
@@ -16543,14 +16733,14 @@
 
 
     // $ANTLR start "rule__AND__Group_1__2"
-    // InternalHenshin_text.g:5177:1: rule__AND__Group_1__2 : rule__AND__Group_1__2__Impl ;
+    // InternalHenshin_text.g:5226:1: rule__AND__Group_1__2 : rule__AND__Group_1__2__Impl ;
     public final void rule__AND__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5181:1: ( rule__AND__Group_1__2__Impl )
-            // InternalHenshin_text.g:5182:2: rule__AND__Group_1__2__Impl
+            // InternalHenshin_text.g:5230:1: ( rule__AND__Group_1__2__Impl )
+            // InternalHenshin_text.g:5231:2: rule__AND__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AND__Group_1__2__Impl();
@@ -16576,21 +16766,21 @@
 
 
     // $ANTLR start "rule__AND__Group_1__2__Impl"
-    // InternalHenshin_text.g:5188:1: rule__AND__Group_1__2__Impl : ( ( rule__AND__RightAssignment_1_2 ) ) ;
+    // InternalHenshin_text.g:5237:1: rule__AND__Group_1__2__Impl : ( ( rule__AND__RightAssignment_1_2 ) ) ;
     public final void rule__AND__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5192:1: ( ( ( rule__AND__RightAssignment_1_2 ) ) )
-            // InternalHenshin_text.g:5193:1: ( ( rule__AND__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:5241:1: ( ( ( rule__AND__RightAssignment_1_2 ) ) )
+            // InternalHenshin_text.g:5242:1: ( ( rule__AND__RightAssignment_1_2 ) )
             {
-            // InternalHenshin_text.g:5193:1: ( ( rule__AND__RightAssignment_1_2 ) )
-            // InternalHenshin_text.g:5194:2: ( rule__AND__RightAssignment_1_2 )
+            // InternalHenshin_text.g:5242:1: ( ( rule__AND__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:5243:2: ( rule__AND__RightAssignment_1_2 )
             {
              before(grammarAccess.getANDAccess().getRightAssignment_1_2()); 
-            // InternalHenshin_text.g:5195:2: ( rule__AND__RightAssignment_1_2 )
-            // InternalHenshin_text.g:5195:3: rule__AND__RightAssignment_1_2
+            // InternalHenshin_text.g:5244:2: ( rule__AND__RightAssignment_1_2 )
+            // InternalHenshin_text.g:5244:3: rule__AND__RightAssignment_1_2
             {
             pushFollow(FOLLOW_2);
             rule__AND__RightAssignment_1_2();
@@ -16623,16 +16813,16 @@
 
 
     // $ANTLR start "rule__Primary__Group_0__0"
-    // InternalHenshin_text.g:5204:1: rule__Primary__Group_0__0 : rule__Primary__Group_0__0__Impl rule__Primary__Group_0__1 ;
+    // InternalHenshin_text.g:5253:1: rule__Primary__Group_0__0 : rule__Primary__Group_0__0__Impl rule__Primary__Group_0__1 ;
     public final void rule__Primary__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5208:1: ( rule__Primary__Group_0__0__Impl rule__Primary__Group_0__1 )
-            // InternalHenshin_text.g:5209:2: rule__Primary__Group_0__0__Impl rule__Primary__Group_0__1
+            // InternalHenshin_text.g:5257:1: ( rule__Primary__Group_0__0__Impl rule__Primary__Group_0__1 )
+            // InternalHenshin_text.g:5258:2: rule__Primary__Group_0__0__Impl rule__Primary__Group_0__1
             {
-            pushFollow(FOLLOW_34);
+            pushFollow(FOLLOW_35);
             rule__Primary__Group_0__0__Impl();
 
             state._fsp--;
@@ -16661,20 +16851,20 @@
 
 
     // $ANTLR start "rule__Primary__Group_0__0__Impl"
-    // InternalHenshin_text.g:5216:1: rule__Primary__Group_0__0__Impl : ( '(' ) ;
+    // InternalHenshin_text.g:5265:1: rule__Primary__Group_0__0__Impl : ( '(' ) ;
     public final void rule__Primary__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5220:1: ( ( '(' ) )
-            // InternalHenshin_text.g:5221:1: ( '(' )
+            // InternalHenshin_text.g:5269:1: ( ( '(' ) )
+            // InternalHenshin_text.g:5270:1: ( '(' )
             {
-            // InternalHenshin_text.g:5221:1: ( '(' )
-            // InternalHenshin_text.g:5222:2: '('
+            // InternalHenshin_text.g:5270:1: ( '(' )
+            // InternalHenshin_text.g:5271:2: '('
             {
              before(grammarAccess.getPrimaryAccess().getLeftParenthesisKeyword_0_0()); 
-            match(input,66,FOLLOW_2); 
+            match(input,70,FOLLOW_2); 
              after(grammarAccess.getPrimaryAccess().getLeftParenthesisKeyword_0_0()); 
 
             }
@@ -16698,16 +16888,16 @@
 
 
     // $ANTLR start "rule__Primary__Group_0__1"
-    // InternalHenshin_text.g:5231:1: rule__Primary__Group_0__1 : rule__Primary__Group_0__1__Impl rule__Primary__Group_0__2 ;
+    // InternalHenshin_text.g:5280:1: rule__Primary__Group_0__1 : rule__Primary__Group_0__1__Impl rule__Primary__Group_0__2 ;
     public final void rule__Primary__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5235:1: ( rule__Primary__Group_0__1__Impl rule__Primary__Group_0__2 )
-            // InternalHenshin_text.g:5236:2: rule__Primary__Group_0__1__Impl rule__Primary__Group_0__2
+            // InternalHenshin_text.g:5284:1: ( rule__Primary__Group_0__1__Impl rule__Primary__Group_0__2 )
+            // InternalHenshin_text.g:5285:2: rule__Primary__Group_0__1__Impl rule__Primary__Group_0__2
             {
-            pushFollow(FOLLOW_28);
+            pushFollow(FOLLOW_29);
             rule__Primary__Group_0__1__Impl();
 
             state._fsp--;
@@ -16736,17 +16926,17 @@
 
 
     // $ANTLR start "rule__Primary__Group_0__1__Impl"
-    // InternalHenshin_text.g:5243:1: rule__Primary__Group_0__1__Impl : ( ruleLogic ) ;
+    // InternalHenshin_text.g:5292:1: rule__Primary__Group_0__1__Impl : ( ruleLogic ) ;
     public final void rule__Primary__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5247:1: ( ( ruleLogic ) )
-            // InternalHenshin_text.g:5248:1: ( ruleLogic )
+            // InternalHenshin_text.g:5296:1: ( ( ruleLogic ) )
+            // InternalHenshin_text.g:5297:1: ( ruleLogic )
             {
-            // InternalHenshin_text.g:5248:1: ( ruleLogic )
-            // InternalHenshin_text.g:5249:2: ruleLogic
+            // InternalHenshin_text.g:5297:1: ( ruleLogic )
+            // InternalHenshin_text.g:5298:2: ruleLogic
             {
              before(grammarAccess.getPrimaryAccess().getLogicParserRuleCall_0_1()); 
             pushFollow(FOLLOW_2);
@@ -16777,14 +16967,14 @@
 
 
     // $ANTLR start "rule__Primary__Group_0__2"
-    // InternalHenshin_text.g:5258:1: rule__Primary__Group_0__2 : rule__Primary__Group_0__2__Impl ;
+    // InternalHenshin_text.g:5307:1: rule__Primary__Group_0__2 : rule__Primary__Group_0__2__Impl ;
     public final void rule__Primary__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5262:1: ( rule__Primary__Group_0__2__Impl )
-            // InternalHenshin_text.g:5263:2: rule__Primary__Group_0__2__Impl
+            // InternalHenshin_text.g:5311:1: ( rule__Primary__Group_0__2__Impl )
+            // InternalHenshin_text.g:5312:2: rule__Primary__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Primary__Group_0__2__Impl();
@@ -16810,20 +17000,20 @@
 
 
     // $ANTLR start "rule__Primary__Group_0__2__Impl"
-    // InternalHenshin_text.g:5269:1: rule__Primary__Group_0__2__Impl : ( ')' ) ;
+    // InternalHenshin_text.g:5318:1: rule__Primary__Group_0__2__Impl : ( ')' ) ;
     public final void rule__Primary__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5273:1: ( ( ')' ) )
-            // InternalHenshin_text.g:5274:1: ( ')' )
+            // InternalHenshin_text.g:5322:1: ( ( ')' ) )
+            // InternalHenshin_text.g:5323:1: ( ')' )
             {
-            // InternalHenshin_text.g:5274:1: ( ')' )
-            // InternalHenshin_text.g:5275:2: ')'
+            // InternalHenshin_text.g:5323:1: ( ')' )
+            // InternalHenshin_text.g:5324:2: ')'
             {
              before(grammarAccess.getPrimaryAccess().getRightParenthesisKeyword_0_2()); 
-            match(input,67,FOLLOW_2); 
+            match(input,71,FOLLOW_2); 
              after(grammarAccess.getPrimaryAccess().getRightParenthesisKeyword_0_2()); 
 
             }
@@ -16847,16 +17037,16 @@
 
 
     // $ANTLR start "rule__Primary__Group_1__0"
-    // InternalHenshin_text.g:5285:1: rule__Primary__Group_1__0 : rule__Primary__Group_1__0__Impl rule__Primary__Group_1__1 ;
+    // InternalHenshin_text.g:5334:1: rule__Primary__Group_1__0 : rule__Primary__Group_1__0__Impl rule__Primary__Group_1__1 ;
     public final void rule__Primary__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5289:1: ( rule__Primary__Group_1__0__Impl rule__Primary__Group_1__1 )
-            // InternalHenshin_text.g:5290:2: rule__Primary__Group_1__0__Impl rule__Primary__Group_1__1
+            // InternalHenshin_text.g:5338:1: ( rule__Primary__Group_1__0__Impl rule__Primary__Group_1__1 )
+            // InternalHenshin_text.g:5339:2: rule__Primary__Group_1__0__Impl rule__Primary__Group_1__1
             {
-            pushFollow(FOLLOW_41);
+            pushFollow(FOLLOW_42);
             rule__Primary__Group_1__0__Impl();
 
             state._fsp--;
@@ -16885,21 +17075,21 @@
 
 
     // $ANTLR start "rule__Primary__Group_1__0__Impl"
-    // InternalHenshin_text.g:5297:1: rule__Primary__Group_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:5346:1: rule__Primary__Group_1__0__Impl : ( () ) ;
     public final void rule__Primary__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5301:1: ( ( () ) )
-            // InternalHenshin_text.g:5302:1: ( () )
+            // InternalHenshin_text.g:5350:1: ( ( () ) )
+            // InternalHenshin_text.g:5351:1: ( () )
             {
-            // InternalHenshin_text.g:5302:1: ( () )
-            // InternalHenshin_text.g:5303:2: ()
+            // InternalHenshin_text.g:5351:1: ( () )
+            // InternalHenshin_text.g:5352:2: ()
             {
              before(grammarAccess.getPrimaryAccess().getNotAction_1_0()); 
-            // InternalHenshin_text.g:5304:2: ()
-            // InternalHenshin_text.g:5304:3: 
+            // InternalHenshin_text.g:5353:2: ()
+            // InternalHenshin_text.g:5353:3: 
             {
             }
 
@@ -16922,16 +17112,16 @@
 
 
     // $ANTLR start "rule__Primary__Group_1__1"
-    // InternalHenshin_text.g:5312:1: rule__Primary__Group_1__1 : rule__Primary__Group_1__1__Impl rule__Primary__Group_1__2 ;
+    // InternalHenshin_text.g:5361:1: rule__Primary__Group_1__1 : rule__Primary__Group_1__1__Impl rule__Primary__Group_1__2 ;
     public final void rule__Primary__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5316:1: ( rule__Primary__Group_1__1__Impl rule__Primary__Group_1__2 )
-            // InternalHenshin_text.g:5317:2: rule__Primary__Group_1__1__Impl rule__Primary__Group_1__2
+            // InternalHenshin_text.g:5365:1: ( rule__Primary__Group_1__1__Impl rule__Primary__Group_1__2 )
+            // InternalHenshin_text.g:5366:2: rule__Primary__Group_1__1__Impl rule__Primary__Group_1__2
             {
-            pushFollow(FOLLOW_34);
+            pushFollow(FOLLOW_35);
             rule__Primary__Group_1__1__Impl();
 
             state._fsp--;
@@ -16960,20 +17150,20 @@
 
 
     // $ANTLR start "rule__Primary__Group_1__1__Impl"
-    // InternalHenshin_text.g:5324:1: rule__Primary__Group_1__1__Impl : ( '!' ) ;
+    // InternalHenshin_text.g:5373:1: rule__Primary__Group_1__1__Impl : ( '!' ) ;
     public final void rule__Primary__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5328:1: ( ( '!' ) )
-            // InternalHenshin_text.g:5329:1: ( '!' )
+            // InternalHenshin_text.g:5377:1: ( ( '!' ) )
+            // InternalHenshin_text.g:5378:1: ( '!' )
             {
-            // InternalHenshin_text.g:5329:1: ( '!' )
-            // InternalHenshin_text.g:5330:2: '!'
+            // InternalHenshin_text.g:5378:1: ( '!' )
+            // InternalHenshin_text.g:5379:2: '!'
             {
              before(grammarAccess.getPrimaryAccess().getExclamationMarkKeyword_1_1()); 
-            match(input,89,FOLLOW_2); 
+            match(input,93,FOLLOW_2); 
              after(grammarAccess.getPrimaryAccess().getExclamationMarkKeyword_1_1()); 
 
             }
@@ -16997,14 +17187,14 @@
 
 
     // $ANTLR start "rule__Primary__Group_1__2"
-    // InternalHenshin_text.g:5339:1: rule__Primary__Group_1__2 : rule__Primary__Group_1__2__Impl ;
+    // InternalHenshin_text.g:5388:1: rule__Primary__Group_1__2 : rule__Primary__Group_1__2__Impl ;
     public final void rule__Primary__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5343:1: ( rule__Primary__Group_1__2__Impl )
-            // InternalHenshin_text.g:5344:2: rule__Primary__Group_1__2__Impl
+            // InternalHenshin_text.g:5392:1: ( rule__Primary__Group_1__2__Impl )
+            // InternalHenshin_text.g:5393:2: rule__Primary__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Primary__Group_1__2__Impl();
@@ -17030,21 +17220,21 @@
 
 
     // $ANTLR start "rule__Primary__Group_1__2__Impl"
-    // InternalHenshin_text.g:5350:1: rule__Primary__Group_1__2__Impl : ( ( rule__Primary__NegationAssignment_1_2 ) ) ;
+    // InternalHenshin_text.g:5399:1: rule__Primary__Group_1__2__Impl : ( ( rule__Primary__NegationAssignment_1_2 ) ) ;
     public final void rule__Primary__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5354:1: ( ( ( rule__Primary__NegationAssignment_1_2 ) ) )
-            // InternalHenshin_text.g:5355:1: ( ( rule__Primary__NegationAssignment_1_2 ) )
+            // InternalHenshin_text.g:5403:1: ( ( ( rule__Primary__NegationAssignment_1_2 ) ) )
+            // InternalHenshin_text.g:5404:1: ( ( rule__Primary__NegationAssignment_1_2 ) )
             {
-            // InternalHenshin_text.g:5355:1: ( ( rule__Primary__NegationAssignment_1_2 ) )
-            // InternalHenshin_text.g:5356:2: ( rule__Primary__NegationAssignment_1_2 )
+            // InternalHenshin_text.g:5404:1: ( ( rule__Primary__NegationAssignment_1_2 ) )
+            // InternalHenshin_text.g:5405:2: ( rule__Primary__NegationAssignment_1_2 )
             {
              before(grammarAccess.getPrimaryAccess().getNegationAssignment_1_2()); 
-            // InternalHenshin_text.g:5357:2: ( rule__Primary__NegationAssignment_1_2 )
-            // InternalHenshin_text.g:5357:3: rule__Primary__NegationAssignment_1_2
+            // InternalHenshin_text.g:5406:2: ( rule__Primary__NegationAssignment_1_2 )
+            // InternalHenshin_text.g:5406:3: rule__Primary__NegationAssignment_1_2
             {
             pushFollow(FOLLOW_2);
             rule__Primary__NegationAssignment_1_2();
@@ -17077,16 +17267,16 @@
 
 
     // $ANTLR start "rule__Atomic__Group__0"
-    // InternalHenshin_text.g:5366:1: rule__Atomic__Group__0 : rule__Atomic__Group__0__Impl rule__Atomic__Group__1 ;
+    // InternalHenshin_text.g:5415:1: rule__Atomic__Group__0 : rule__Atomic__Group__0__Impl rule__Atomic__Group__1 ;
     public final void rule__Atomic__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5370:1: ( rule__Atomic__Group__0__Impl rule__Atomic__Group__1 )
-            // InternalHenshin_text.g:5371:2: rule__Atomic__Group__0__Impl rule__Atomic__Group__1
+            // InternalHenshin_text.g:5419:1: ( rule__Atomic__Group__0__Impl rule__Atomic__Group__1 )
+            // InternalHenshin_text.g:5420:2: rule__Atomic__Group__0__Impl rule__Atomic__Group__1
             {
-            pushFollow(FOLLOW_34);
+            pushFollow(FOLLOW_35);
             rule__Atomic__Group__0__Impl();
 
             state._fsp--;
@@ -17115,21 +17305,21 @@
 
 
     // $ANTLR start "rule__Atomic__Group__0__Impl"
-    // InternalHenshin_text.g:5378:1: rule__Atomic__Group__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:5427:1: rule__Atomic__Group__0__Impl : ( () ) ;
     public final void rule__Atomic__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5382:1: ( ( () ) )
-            // InternalHenshin_text.g:5383:1: ( () )
+            // InternalHenshin_text.g:5431:1: ( ( () ) )
+            // InternalHenshin_text.g:5432:1: ( () )
             {
-            // InternalHenshin_text.g:5383:1: ( () )
-            // InternalHenshin_text.g:5384:2: ()
+            // InternalHenshin_text.g:5432:1: ( () )
+            // InternalHenshin_text.g:5433:2: ()
             {
              before(grammarAccess.getAtomicAccess().getConditionGraphRefAction_0()); 
-            // InternalHenshin_text.g:5385:2: ()
-            // InternalHenshin_text.g:5385:3: 
+            // InternalHenshin_text.g:5434:2: ()
+            // InternalHenshin_text.g:5434:3: 
             {
             }
 
@@ -17152,14 +17342,14 @@
 
 
     // $ANTLR start "rule__Atomic__Group__1"
-    // InternalHenshin_text.g:5393:1: rule__Atomic__Group__1 : rule__Atomic__Group__1__Impl ;
+    // InternalHenshin_text.g:5442:1: rule__Atomic__Group__1 : rule__Atomic__Group__1__Impl ;
     public final void rule__Atomic__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5397:1: ( rule__Atomic__Group__1__Impl )
-            // InternalHenshin_text.g:5398:2: rule__Atomic__Group__1__Impl
+            // InternalHenshin_text.g:5446:1: ( rule__Atomic__Group__1__Impl )
+            // InternalHenshin_text.g:5447:2: rule__Atomic__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Atomic__Group__1__Impl();
@@ -17185,21 +17375,21 @@
 
 
     // $ANTLR start "rule__Atomic__Group__1__Impl"
-    // InternalHenshin_text.g:5404:1: rule__Atomic__Group__1__Impl : ( ( rule__Atomic__ConditionGraphRefAssignment_1 ) ) ;
+    // InternalHenshin_text.g:5453:1: rule__Atomic__Group__1__Impl : ( ( rule__Atomic__ConditionGraphRefAssignment_1 ) ) ;
     public final void rule__Atomic__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5408:1: ( ( ( rule__Atomic__ConditionGraphRefAssignment_1 ) ) )
-            // InternalHenshin_text.g:5409:1: ( ( rule__Atomic__ConditionGraphRefAssignment_1 ) )
+            // InternalHenshin_text.g:5457:1: ( ( ( rule__Atomic__ConditionGraphRefAssignment_1 ) ) )
+            // InternalHenshin_text.g:5458:1: ( ( rule__Atomic__ConditionGraphRefAssignment_1 ) )
             {
-            // InternalHenshin_text.g:5409:1: ( ( rule__Atomic__ConditionGraphRefAssignment_1 ) )
-            // InternalHenshin_text.g:5410:2: ( rule__Atomic__ConditionGraphRefAssignment_1 )
+            // InternalHenshin_text.g:5458:1: ( ( rule__Atomic__ConditionGraphRefAssignment_1 ) )
+            // InternalHenshin_text.g:5459:2: ( rule__Atomic__ConditionGraphRefAssignment_1 )
             {
              before(grammarAccess.getAtomicAccess().getConditionGraphRefAssignment_1()); 
-            // InternalHenshin_text.g:5411:2: ( rule__Atomic__ConditionGraphRefAssignment_1 )
-            // InternalHenshin_text.g:5411:3: rule__Atomic__ConditionGraphRefAssignment_1
+            // InternalHenshin_text.g:5460:2: ( rule__Atomic__ConditionGraphRefAssignment_1 )
+            // InternalHenshin_text.g:5460:3: rule__Atomic__ConditionGraphRefAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__Atomic__ConditionGraphRefAssignment_1();
@@ -17232,14 +17422,14 @@
 
 
     // $ANTLR start "rule__ConditionGraph__Group__0"
-    // InternalHenshin_text.g:5420:1: rule__ConditionGraph__Group__0 : rule__ConditionGraph__Group__0__Impl rule__ConditionGraph__Group__1 ;
+    // InternalHenshin_text.g:5469:1: rule__ConditionGraph__Group__0 : rule__ConditionGraph__Group__0__Impl rule__ConditionGraph__Group__1 ;
     public final void rule__ConditionGraph__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5424:1: ( rule__ConditionGraph__Group__0__Impl rule__ConditionGraph__Group__1 )
-            // InternalHenshin_text.g:5425:2: rule__ConditionGraph__Group__0__Impl rule__ConditionGraph__Group__1
+            // InternalHenshin_text.g:5473:1: ( rule__ConditionGraph__Group__0__Impl rule__ConditionGraph__Group__1 )
+            // InternalHenshin_text.g:5474:2: rule__ConditionGraph__Group__0__Impl rule__ConditionGraph__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__ConditionGraph__Group__0__Impl();
@@ -17270,20 +17460,20 @@
 
 
     // $ANTLR start "rule__ConditionGraph__Group__0__Impl"
-    // InternalHenshin_text.g:5432:1: rule__ConditionGraph__Group__0__Impl : ( 'conditionGraph' ) ;
+    // InternalHenshin_text.g:5481:1: rule__ConditionGraph__Group__0__Impl : ( 'conditionGraph' ) ;
     public final void rule__ConditionGraph__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5436:1: ( ( 'conditionGraph' ) )
-            // InternalHenshin_text.g:5437:1: ( 'conditionGraph' )
+            // InternalHenshin_text.g:5485:1: ( ( 'conditionGraph' ) )
+            // InternalHenshin_text.g:5486:1: ( 'conditionGraph' )
             {
-            // InternalHenshin_text.g:5437:1: ( 'conditionGraph' )
-            // InternalHenshin_text.g:5438:2: 'conditionGraph'
+            // InternalHenshin_text.g:5486:1: ( 'conditionGraph' )
+            // InternalHenshin_text.g:5487:2: 'conditionGraph'
             {
              before(grammarAccess.getConditionGraphAccess().getConditionGraphKeyword_0()); 
-            match(input,90,FOLLOW_2); 
+            match(input,94,FOLLOW_2); 
              after(grammarAccess.getConditionGraphAccess().getConditionGraphKeyword_0()); 
 
             }
@@ -17307,14 +17497,14 @@
 
 
     // $ANTLR start "rule__ConditionGraph__Group__1"
-    // InternalHenshin_text.g:5447:1: rule__ConditionGraph__Group__1 : rule__ConditionGraph__Group__1__Impl rule__ConditionGraph__Group__2 ;
+    // InternalHenshin_text.g:5496:1: rule__ConditionGraph__Group__1 : rule__ConditionGraph__Group__1__Impl rule__ConditionGraph__Group__2 ;
     public final void rule__ConditionGraph__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5451:1: ( rule__ConditionGraph__Group__1__Impl rule__ConditionGraph__Group__2 )
-            // InternalHenshin_text.g:5452:2: rule__ConditionGraph__Group__1__Impl rule__ConditionGraph__Group__2
+            // InternalHenshin_text.g:5500:1: ( rule__ConditionGraph__Group__1__Impl rule__ConditionGraph__Group__2 )
+            // InternalHenshin_text.g:5501:2: rule__ConditionGraph__Group__1__Impl rule__ConditionGraph__Group__2
             {
             pushFollow(FOLLOW_12);
             rule__ConditionGraph__Group__1__Impl();
@@ -17345,21 +17535,21 @@
 
 
     // $ANTLR start "rule__ConditionGraph__Group__1__Impl"
-    // InternalHenshin_text.g:5459:1: rule__ConditionGraph__Group__1__Impl : ( ( rule__ConditionGraph__NameAssignment_1 ) ) ;
+    // InternalHenshin_text.g:5508:1: rule__ConditionGraph__Group__1__Impl : ( ( rule__ConditionGraph__NameAssignment_1 ) ) ;
     public final void rule__ConditionGraph__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5463:1: ( ( ( rule__ConditionGraph__NameAssignment_1 ) ) )
-            // InternalHenshin_text.g:5464:1: ( ( rule__ConditionGraph__NameAssignment_1 ) )
+            // InternalHenshin_text.g:5512:1: ( ( ( rule__ConditionGraph__NameAssignment_1 ) ) )
+            // InternalHenshin_text.g:5513:1: ( ( rule__ConditionGraph__NameAssignment_1 ) )
             {
-            // InternalHenshin_text.g:5464:1: ( ( rule__ConditionGraph__NameAssignment_1 ) )
-            // InternalHenshin_text.g:5465:2: ( rule__ConditionGraph__NameAssignment_1 )
+            // InternalHenshin_text.g:5513:1: ( ( rule__ConditionGraph__NameAssignment_1 ) )
+            // InternalHenshin_text.g:5514:2: ( rule__ConditionGraph__NameAssignment_1 )
             {
              before(grammarAccess.getConditionGraphAccess().getNameAssignment_1()); 
-            // InternalHenshin_text.g:5466:2: ( rule__ConditionGraph__NameAssignment_1 )
-            // InternalHenshin_text.g:5466:3: rule__ConditionGraph__NameAssignment_1
+            // InternalHenshin_text.g:5515:2: ( rule__ConditionGraph__NameAssignment_1 )
+            // InternalHenshin_text.g:5515:3: rule__ConditionGraph__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__ConditionGraph__NameAssignment_1();
@@ -17392,16 +17582,16 @@
 
 
     // $ANTLR start "rule__ConditionGraph__Group__2"
-    // InternalHenshin_text.g:5474:1: rule__ConditionGraph__Group__2 : rule__ConditionGraph__Group__2__Impl rule__ConditionGraph__Group__3 ;
+    // InternalHenshin_text.g:5523:1: rule__ConditionGraph__Group__2 : rule__ConditionGraph__Group__2__Impl rule__ConditionGraph__Group__3 ;
     public final void rule__ConditionGraph__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5478:1: ( rule__ConditionGraph__Group__2__Impl rule__ConditionGraph__Group__3 )
-            // InternalHenshin_text.g:5479:2: rule__ConditionGraph__Group__2__Impl rule__ConditionGraph__Group__3
+            // InternalHenshin_text.g:5527:1: ( rule__ConditionGraph__Group__2__Impl rule__ConditionGraph__Group__3 )
+            // InternalHenshin_text.g:5528:2: rule__ConditionGraph__Group__2__Impl rule__ConditionGraph__Group__3
             {
-            pushFollow(FOLLOW_42);
+            pushFollow(FOLLOW_43);
             rule__ConditionGraph__Group__2__Impl();
 
             state._fsp--;
@@ -17430,20 +17620,20 @@
 
 
     // $ANTLR start "rule__ConditionGraph__Group__2__Impl"
-    // InternalHenshin_text.g:5486:1: rule__ConditionGraph__Group__2__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:5535:1: rule__ConditionGraph__Group__2__Impl : ( '{' ) ;
     public final void rule__ConditionGraph__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5490:1: ( ( '{' ) )
-            // InternalHenshin_text.g:5491:1: ( '{' )
+            // InternalHenshin_text.g:5539:1: ( ( '{' ) )
+            // InternalHenshin_text.g:5540:1: ( '{' )
             {
-            // InternalHenshin_text.g:5491:1: ( '{' )
-            // InternalHenshin_text.g:5492:2: '{'
+            // InternalHenshin_text.g:5540:1: ( '{' )
+            // InternalHenshin_text.g:5541:2: '{'
             {
              before(grammarAccess.getConditionGraphAccess().getLeftCurlyBracketKeyword_2()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getConditionGraphAccess().getLeftCurlyBracketKeyword_2()); 
 
             }
@@ -17467,16 +17657,16 @@
 
 
     // $ANTLR start "rule__ConditionGraph__Group__3"
-    // InternalHenshin_text.g:5501:1: rule__ConditionGraph__Group__3 : rule__ConditionGraph__Group__3__Impl rule__ConditionGraph__Group__4 ;
+    // InternalHenshin_text.g:5550:1: rule__ConditionGraph__Group__3 : rule__ConditionGraph__Group__3__Impl rule__ConditionGraph__Group__4 ;
     public final void rule__ConditionGraph__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5505:1: ( rule__ConditionGraph__Group__3__Impl rule__ConditionGraph__Group__4 )
-            // InternalHenshin_text.g:5506:2: rule__ConditionGraph__Group__3__Impl rule__ConditionGraph__Group__4
+            // InternalHenshin_text.g:5554:1: ( rule__ConditionGraph__Group__3__Impl rule__ConditionGraph__Group__4 )
+            // InternalHenshin_text.g:5555:2: rule__ConditionGraph__Group__3__Impl rule__ConditionGraph__Group__4
             {
-            pushFollow(FOLLOW_42);
+            pushFollow(FOLLOW_43);
             rule__ConditionGraph__Group__3__Impl();
 
             state._fsp--;
@@ -17505,35 +17695,35 @@
 
 
     // $ANTLR start "rule__ConditionGraph__Group__3__Impl"
-    // InternalHenshin_text.g:5513:1: rule__ConditionGraph__Group__3__Impl : ( ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )* ) ;
+    // InternalHenshin_text.g:5562:1: rule__ConditionGraph__Group__3__Impl : ( ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )* ) ;
     public final void rule__ConditionGraph__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5517:1: ( ( ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )* ) )
-            // InternalHenshin_text.g:5518:1: ( ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )* )
+            // InternalHenshin_text.g:5566:1: ( ( ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )* ) )
+            // InternalHenshin_text.g:5567:1: ( ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )* )
             {
-            // InternalHenshin_text.g:5518:1: ( ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )* )
-            // InternalHenshin_text.g:5519:2: ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )*
+            // InternalHenshin_text.g:5567:1: ( ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )* )
+            // InternalHenshin_text.g:5568:2: ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )*
             {
              before(grammarAccess.getConditionGraphAccess().getConditionGraphElementsAssignment_3()); 
-            // InternalHenshin_text.g:5520:2: ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )*
-            loop44:
+            // InternalHenshin_text.g:5569:2: ( rule__ConditionGraph__ConditionGraphElementsAssignment_3 )*
+            loop45:
             do {
-                int alt44=2;
-                int LA44_0 = input.LA(1);
+                int alt45=2;
+                int LA45_0 = input.LA(1);
 
-                if ( (LA44_0==79||(LA44_0>=82 && LA44_0<=83)||LA44_0==86) ) {
-                    alt44=1;
+                if ( (LA45_0==83||(LA45_0>=86 && LA45_0<=87)||LA45_0==90) ) {
+                    alt45=1;
                 }
 
 
-                switch (alt44) {
+                switch (alt45) {
             	case 1 :
-            	    // InternalHenshin_text.g:5520:3: rule__ConditionGraph__ConditionGraphElementsAssignment_3
+            	    // InternalHenshin_text.g:5569:3: rule__ConditionGraph__ConditionGraphElementsAssignment_3
             	    {
-            	    pushFollow(FOLLOW_43);
+            	    pushFollow(FOLLOW_44);
             	    rule__ConditionGraph__ConditionGraphElementsAssignment_3();
 
             	    state._fsp--;
@@ -17543,7 +17733,7 @@
             	    break;
 
             	default :
-            	    break loop44;
+            	    break loop45;
                 }
             } while (true);
 
@@ -17570,14 +17760,14 @@
 
 
     // $ANTLR start "rule__ConditionGraph__Group__4"
-    // InternalHenshin_text.g:5528:1: rule__ConditionGraph__Group__4 : rule__ConditionGraph__Group__4__Impl ;
+    // InternalHenshin_text.g:5577:1: rule__ConditionGraph__Group__4 : rule__ConditionGraph__Group__4__Impl ;
     public final void rule__ConditionGraph__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5532:1: ( rule__ConditionGraph__Group__4__Impl )
-            // InternalHenshin_text.g:5533:2: rule__ConditionGraph__Group__4__Impl
+            // InternalHenshin_text.g:5581:1: ( rule__ConditionGraph__Group__4__Impl )
+            // InternalHenshin_text.g:5582:2: rule__ConditionGraph__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ConditionGraph__Group__4__Impl();
@@ -17603,20 +17793,20 @@
 
 
     // $ANTLR start "rule__ConditionGraph__Group__4__Impl"
-    // InternalHenshin_text.g:5539:1: rule__ConditionGraph__Group__4__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:5588:1: rule__ConditionGraph__Group__4__Impl : ( '}' ) ;
     public final void rule__ConditionGraph__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5543:1: ( ( '}' ) )
-            // InternalHenshin_text.g:5544:1: ( '}' )
+            // InternalHenshin_text.g:5592:1: ( ( '}' ) )
+            // InternalHenshin_text.g:5593:1: ( '}' )
             {
-            // InternalHenshin_text.g:5544:1: ( '}' )
-            // InternalHenshin_text.g:5545:2: '}'
+            // InternalHenshin_text.g:5593:1: ( '}' )
+            // InternalHenshin_text.g:5594:2: '}'
             {
              before(grammarAccess.getConditionGraphAccess().getRightCurlyBracketKeyword_4()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getConditionGraphAccess().getRightCurlyBracketKeyword_4()); 
 
             }
@@ -17640,16 +17830,16 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group__0"
-    // InternalHenshin_text.g:5555:1: rule__ConditionEdges__Group__0 : rule__ConditionEdges__Group__0__Impl rule__ConditionEdges__Group__1 ;
+    // InternalHenshin_text.g:5604:1: rule__ConditionEdges__Group__0 : rule__ConditionEdges__Group__0__Impl rule__ConditionEdges__Group__1 ;
     public final void rule__ConditionEdges__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5559:1: ( rule__ConditionEdges__Group__0__Impl rule__ConditionEdges__Group__1 )
-            // InternalHenshin_text.g:5560:2: rule__ConditionEdges__Group__0__Impl rule__ConditionEdges__Group__1
+            // InternalHenshin_text.g:5608:1: ( rule__ConditionEdges__Group__0__Impl rule__ConditionEdges__Group__1 )
+            // InternalHenshin_text.g:5609:2: rule__ConditionEdges__Group__0__Impl rule__ConditionEdges__Group__1
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_21);
             rule__ConditionEdges__Group__0__Impl();
 
             state._fsp--;
@@ -17678,20 +17868,20 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group__0__Impl"
-    // InternalHenshin_text.g:5567:1: rule__ConditionEdges__Group__0__Impl : ( 'edges' ) ;
+    // InternalHenshin_text.g:5616:1: rule__ConditionEdges__Group__0__Impl : ( 'edges' ) ;
     public final void rule__ConditionEdges__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5571:1: ( ( 'edges' ) )
-            // InternalHenshin_text.g:5572:1: ( 'edges' )
+            // InternalHenshin_text.g:5620:1: ( ( 'edges' ) )
+            // InternalHenshin_text.g:5621:1: ( 'edges' )
             {
-            // InternalHenshin_text.g:5572:1: ( 'edges' )
-            // InternalHenshin_text.g:5573:2: 'edges'
+            // InternalHenshin_text.g:5621:1: ( 'edges' )
+            // InternalHenshin_text.g:5622:2: 'edges'
             {
              before(grammarAccess.getConditionEdgesAccess().getEdgesKeyword_0()); 
-            match(input,79,FOLLOW_2); 
+            match(input,83,FOLLOW_2); 
              after(grammarAccess.getConditionEdgesAccess().getEdgesKeyword_0()); 
 
             }
@@ -17715,14 +17905,14 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group__1"
-    // InternalHenshin_text.g:5582:1: rule__ConditionEdges__Group__1 : rule__ConditionEdges__Group__1__Impl rule__ConditionEdges__Group__2 ;
+    // InternalHenshin_text.g:5631:1: rule__ConditionEdges__Group__1 : rule__ConditionEdges__Group__1__Impl rule__ConditionEdges__Group__2 ;
     public final void rule__ConditionEdges__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5586:1: ( rule__ConditionEdges__Group__1__Impl rule__ConditionEdges__Group__2 )
-            // InternalHenshin_text.g:5587:2: rule__ConditionEdges__Group__1__Impl rule__ConditionEdges__Group__2
+            // InternalHenshin_text.g:5635:1: ( rule__ConditionEdges__Group__1__Impl rule__ConditionEdges__Group__2 )
+            // InternalHenshin_text.g:5636:2: rule__ConditionEdges__Group__1__Impl rule__ConditionEdges__Group__2
             {
             pushFollow(FOLLOW_10);
             rule__ConditionEdges__Group__1__Impl();
@@ -17753,20 +17943,20 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group__1__Impl"
-    // InternalHenshin_text.g:5594:1: rule__ConditionEdges__Group__1__Impl : ( '[' ) ;
+    // InternalHenshin_text.g:5643:1: rule__ConditionEdges__Group__1__Impl : ( '[' ) ;
     public final void rule__ConditionEdges__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5598:1: ( ( '[' ) )
-            // InternalHenshin_text.g:5599:1: ( '[' )
+            // InternalHenshin_text.g:5647:1: ( ( '[' ) )
+            // InternalHenshin_text.g:5648:1: ( '[' )
             {
-            // InternalHenshin_text.g:5599:1: ( '[' )
-            // InternalHenshin_text.g:5600:2: '['
+            // InternalHenshin_text.g:5648:1: ( '[' )
+            // InternalHenshin_text.g:5649:2: '['
             {
              before(grammarAccess.getConditionEdgesAccess().getLeftSquareBracketKeyword_1()); 
-            match(input,76,FOLLOW_2); 
+            match(input,80,FOLLOW_2); 
              after(grammarAccess.getConditionEdgesAccess().getLeftSquareBracketKeyword_1()); 
 
             }
@@ -17790,16 +17980,16 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group__2"
-    // InternalHenshin_text.g:5609:1: rule__ConditionEdges__Group__2 : rule__ConditionEdges__Group__2__Impl rule__ConditionEdges__Group__3 ;
+    // InternalHenshin_text.g:5658:1: rule__ConditionEdges__Group__2 : rule__ConditionEdges__Group__2__Impl rule__ConditionEdges__Group__3 ;
     public final void rule__ConditionEdges__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5613:1: ( rule__ConditionEdges__Group__2__Impl rule__ConditionEdges__Group__3 )
-            // InternalHenshin_text.g:5614:2: rule__ConditionEdges__Group__2__Impl rule__ConditionEdges__Group__3
+            // InternalHenshin_text.g:5662:1: ( rule__ConditionEdges__Group__2__Impl rule__ConditionEdges__Group__3 )
+            // InternalHenshin_text.g:5663:2: rule__ConditionEdges__Group__2__Impl rule__ConditionEdges__Group__3
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_23);
             rule__ConditionEdges__Group__2__Impl();
 
             state._fsp--;
@@ -17828,21 +18018,21 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group__2__Impl"
-    // InternalHenshin_text.g:5621:1: rule__ConditionEdges__Group__2__Impl : ( ( rule__ConditionEdges__EdgesAssignment_2 ) ) ;
+    // InternalHenshin_text.g:5670:1: rule__ConditionEdges__Group__2__Impl : ( ( rule__ConditionEdges__EdgesAssignment_2 ) ) ;
     public final void rule__ConditionEdges__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5625:1: ( ( ( rule__ConditionEdges__EdgesAssignment_2 ) ) )
-            // InternalHenshin_text.g:5626:1: ( ( rule__ConditionEdges__EdgesAssignment_2 ) )
+            // InternalHenshin_text.g:5674:1: ( ( ( rule__ConditionEdges__EdgesAssignment_2 ) ) )
+            // InternalHenshin_text.g:5675:1: ( ( rule__ConditionEdges__EdgesAssignment_2 ) )
             {
-            // InternalHenshin_text.g:5626:1: ( ( rule__ConditionEdges__EdgesAssignment_2 ) )
-            // InternalHenshin_text.g:5627:2: ( rule__ConditionEdges__EdgesAssignment_2 )
+            // InternalHenshin_text.g:5675:1: ( ( rule__ConditionEdges__EdgesAssignment_2 ) )
+            // InternalHenshin_text.g:5676:2: ( rule__ConditionEdges__EdgesAssignment_2 )
             {
              before(grammarAccess.getConditionEdgesAccess().getEdgesAssignment_2()); 
-            // InternalHenshin_text.g:5628:2: ( rule__ConditionEdges__EdgesAssignment_2 )
-            // InternalHenshin_text.g:5628:3: rule__ConditionEdges__EdgesAssignment_2
+            // InternalHenshin_text.g:5677:2: ( rule__ConditionEdges__EdgesAssignment_2 )
+            // InternalHenshin_text.g:5677:3: rule__ConditionEdges__EdgesAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__ConditionEdges__EdgesAssignment_2();
@@ -17875,16 +18065,16 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group__3"
-    // InternalHenshin_text.g:5636:1: rule__ConditionEdges__Group__3 : rule__ConditionEdges__Group__3__Impl rule__ConditionEdges__Group__4 ;
+    // InternalHenshin_text.g:5685:1: rule__ConditionEdges__Group__3 : rule__ConditionEdges__Group__3__Impl rule__ConditionEdges__Group__4 ;
     public final void rule__ConditionEdges__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5640:1: ( rule__ConditionEdges__Group__3__Impl rule__ConditionEdges__Group__4 )
-            // InternalHenshin_text.g:5641:2: rule__ConditionEdges__Group__3__Impl rule__ConditionEdges__Group__4
+            // InternalHenshin_text.g:5689:1: ( rule__ConditionEdges__Group__3__Impl rule__ConditionEdges__Group__4 )
+            // InternalHenshin_text.g:5690:2: rule__ConditionEdges__Group__3__Impl rule__ConditionEdges__Group__4
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_23);
             rule__ConditionEdges__Group__3__Impl();
 
             state._fsp--;
@@ -17913,33 +18103,33 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group__3__Impl"
-    // InternalHenshin_text.g:5648:1: rule__ConditionEdges__Group__3__Impl : ( ( rule__ConditionEdges__Group_3__0 )* ) ;
+    // InternalHenshin_text.g:5697:1: rule__ConditionEdges__Group__3__Impl : ( ( rule__ConditionEdges__Group_3__0 )* ) ;
     public final void rule__ConditionEdges__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5652:1: ( ( ( rule__ConditionEdges__Group_3__0 )* ) )
-            // InternalHenshin_text.g:5653:1: ( ( rule__ConditionEdges__Group_3__0 )* )
+            // InternalHenshin_text.g:5701:1: ( ( ( rule__ConditionEdges__Group_3__0 )* ) )
+            // InternalHenshin_text.g:5702:1: ( ( rule__ConditionEdges__Group_3__0 )* )
             {
-            // InternalHenshin_text.g:5653:1: ( ( rule__ConditionEdges__Group_3__0 )* )
-            // InternalHenshin_text.g:5654:2: ( rule__ConditionEdges__Group_3__0 )*
+            // InternalHenshin_text.g:5702:1: ( ( rule__ConditionEdges__Group_3__0 )* )
+            // InternalHenshin_text.g:5703:2: ( rule__ConditionEdges__Group_3__0 )*
             {
              before(grammarAccess.getConditionEdgesAccess().getGroup_3()); 
-            // InternalHenshin_text.g:5655:2: ( rule__ConditionEdges__Group_3__0 )*
-            loop45:
+            // InternalHenshin_text.g:5704:2: ( rule__ConditionEdges__Group_3__0 )*
+            loop46:
             do {
-                int alt45=2;
-                int LA45_0 = input.LA(1);
+                int alt46=2;
+                int LA46_0 = input.LA(1);
 
-                if ( (LA45_0==70) ) {
-                    alt45=1;
+                if ( (LA46_0==74) ) {
+                    alt46=1;
                 }
 
 
-                switch (alt45) {
+                switch (alt46) {
             	case 1 :
-            	    // InternalHenshin_text.g:5655:3: rule__ConditionEdges__Group_3__0
+            	    // InternalHenshin_text.g:5704:3: rule__ConditionEdges__Group_3__0
             	    {
             	    pushFollow(FOLLOW_17);
             	    rule__ConditionEdges__Group_3__0();
@@ -17951,7 +18141,7 @@
             	    break;
 
             	default :
-            	    break loop45;
+            	    break loop46;
                 }
             } while (true);
 
@@ -17978,14 +18168,14 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group__4"
-    // InternalHenshin_text.g:5663:1: rule__ConditionEdges__Group__4 : rule__ConditionEdges__Group__4__Impl ;
+    // InternalHenshin_text.g:5712:1: rule__ConditionEdges__Group__4 : rule__ConditionEdges__Group__4__Impl ;
     public final void rule__ConditionEdges__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5667:1: ( rule__ConditionEdges__Group__4__Impl )
-            // InternalHenshin_text.g:5668:2: rule__ConditionEdges__Group__4__Impl
+            // InternalHenshin_text.g:5716:1: ( rule__ConditionEdges__Group__4__Impl )
+            // InternalHenshin_text.g:5717:2: rule__ConditionEdges__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ConditionEdges__Group__4__Impl();
@@ -18011,20 +18201,20 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group__4__Impl"
-    // InternalHenshin_text.g:5674:1: rule__ConditionEdges__Group__4__Impl : ( ']' ) ;
+    // InternalHenshin_text.g:5723:1: rule__ConditionEdges__Group__4__Impl : ( ']' ) ;
     public final void rule__ConditionEdges__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5678:1: ( ( ']' ) )
-            // InternalHenshin_text.g:5679:1: ( ']' )
+            // InternalHenshin_text.g:5727:1: ( ( ']' ) )
+            // InternalHenshin_text.g:5728:1: ( ']' )
             {
-            // InternalHenshin_text.g:5679:1: ( ']' )
-            // InternalHenshin_text.g:5680:2: ']'
+            // InternalHenshin_text.g:5728:1: ( ']' )
+            // InternalHenshin_text.g:5729:2: ']'
             {
              before(grammarAccess.getConditionEdgesAccess().getRightSquareBracketKeyword_4()); 
-            match(input,77,FOLLOW_2); 
+            match(input,81,FOLLOW_2); 
              after(grammarAccess.getConditionEdgesAccess().getRightSquareBracketKeyword_4()); 
 
             }
@@ -18048,14 +18238,14 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group_3__0"
-    // InternalHenshin_text.g:5690:1: rule__ConditionEdges__Group_3__0 : rule__ConditionEdges__Group_3__0__Impl rule__ConditionEdges__Group_3__1 ;
+    // InternalHenshin_text.g:5739:1: rule__ConditionEdges__Group_3__0 : rule__ConditionEdges__Group_3__0__Impl rule__ConditionEdges__Group_3__1 ;
     public final void rule__ConditionEdges__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5694:1: ( rule__ConditionEdges__Group_3__0__Impl rule__ConditionEdges__Group_3__1 )
-            // InternalHenshin_text.g:5695:2: rule__ConditionEdges__Group_3__0__Impl rule__ConditionEdges__Group_3__1
+            // InternalHenshin_text.g:5743:1: ( rule__ConditionEdges__Group_3__0__Impl rule__ConditionEdges__Group_3__1 )
+            // InternalHenshin_text.g:5744:2: rule__ConditionEdges__Group_3__0__Impl rule__ConditionEdges__Group_3__1
             {
             pushFollow(FOLLOW_10);
             rule__ConditionEdges__Group_3__0__Impl();
@@ -18086,20 +18276,20 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group_3__0__Impl"
-    // InternalHenshin_text.g:5702:1: rule__ConditionEdges__Group_3__0__Impl : ( ',' ) ;
+    // InternalHenshin_text.g:5751:1: rule__ConditionEdges__Group_3__0__Impl : ( ',' ) ;
     public final void rule__ConditionEdges__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5706:1: ( ( ',' ) )
-            // InternalHenshin_text.g:5707:1: ( ',' )
+            // InternalHenshin_text.g:5755:1: ( ( ',' ) )
+            // InternalHenshin_text.g:5756:1: ( ',' )
             {
-            // InternalHenshin_text.g:5707:1: ( ',' )
-            // InternalHenshin_text.g:5708:2: ','
+            // InternalHenshin_text.g:5756:1: ( ',' )
+            // InternalHenshin_text.g:5757:2: ','
             {
              before(grammarAccess.getConditionEdgesAccess().getCommaKeyword_3_0()); 
-            match(input,70,FOLLOW_2); 
+            match(input,74,FOLLOW_2); 
              after(grammarAccess.getConditionEdgesAccess().getCommaKeyword_3_0()); 
 
             }
@@ -18123,14 +18313,14 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group_3__1"
-    // InternalHenshin_text.g:5717:1: rule__ConditionEdges__Group_3__1 : rule__ConditionEdges__Group_3__1__Impl ;
+    // InternalHenshin_text.g:5766:1: rule__ConditionEdges__Group_3__1 : rule__ConditionEdges__Group_3__1__Impl ;
     public final void rule__ConditionEdges__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5721:1: ( rule__ConditionEdges__Group_3__1__Impl )
-            // InternalHenshin_text.g:5722:2: rule__ConditionEdges__Group_3__1__Impl
+            // InternalHenshin_text.g:5770:1: ( rule__ConditionEdges__Group_3__1__Impl )
+            // InternalHenshin_text.g:5771:2: rule__ConditionEdges__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ConditionEdges__Group_3__1__Impl();
@@ -18156,21 +18346,21 @@
 
 
     // $ANTLR start "rule__ConditionEdges__Group_3__1__Impl"
-    // InternalHenshin_text.g:5728:1: rule__ConditionEdges__Group_3__1__Impl : ( ( rule__ConditionEdges__EdgesAssignment_3_1 ) ) ;
+    // InternalHenshin_text.g:5777:1: rule__ConditionEdges__Group_3__1__Impl : ( ( rule__ConditionEdges__EdgesAssignment_3_1 ) ) ;
     public final void rule__ConditionEdges__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5732:1: ( ( ( rule__ConditionEdges__EdgesAssignment_3_1 ) ) )
-            // InternalHenshin_text.g:5733:1: ( ( rule__ConditionEdges__EdgesAssignment_3_1 ) )
+            // InternalHenshin_text.g:5781:1: ( ( ( rule__ConditionEdges__EdgesAssignment_3_1 ) ) )
+            // InternalHenshin_text.g:5782:1: ( ( rule__ConditionEdges__EdgesAssignment_3_1 ) )
             {
-            // InternalHenshin_text.g:5733:1: ( ( rule__ConditionEdges__EdgesAssignment_3_1 ) )
-            // InternalHenshin_text.g:5734:2: ( rule__ConditionEdges__EdgesAssignment_3_1 )
+            // InternalHenshin_text.g:5782:1: ( ( rule__ConditionEdges__EdgesAssignment_3_1 ) )
+            // InternalHenshin_text.g:5783:2: ( rule__ConditionEdges__EdgesAssignment_3_1 )
             {
              before(grammarAccess.getConditionEdgesAccess().getEdgesAssignment_3_1()); 
-            // InternalHenshin_text.g:5735:2: ( rule__ConditionEdges__EdgesAssignment_3_1 )
-            // InternalHenshin_text.g:5735:3: rule__ConditionEdges__EdgesAssignment_3_1
+            // InternalHenshin_text.g:5784:2: ( rule__ConditionEdges__EdgesAssignment_3_1 )
+            // InternalHenshin_text.g:5784:3: rule__ConditionEdges__EdgesAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__ConditionEdges__EdgesAssignment_3_1();
@@ -18203,14 +18393,14 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__0"
-    // InternalHenshin_text.g:5744:1: rule__ConditionEdge__Group__0 : rule__ConditionEdge__Group__0__Impl rule__ConditionEdge__Group__1 ;
+    // InternalHenshin_text.g:5793:1: rule__ConditionEdge__Group__0 : rule__ConditionEdge__Group__0__Impl rule__ConditionEdge__Group__1 ;
     public final void rule__ConditionEdge__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5748:1: ( rule__ConditionEdge__Group__0__Impl rule__ConditionEdge__Group__1 )
-            // InternalHenshin_text.g:5749:2: rule__ConditionEdge__Group__0__Impl rule__ConditionEdge__Group__1
+            // InternalHenshin_text.g:5797:1: ( rule__ConditionEdge__Group__0__Impl rule__ConditionEdge__Group__1 )
+            // InternalHenshin_text.g:5798:2: rule__ConditionEdge__Group__0__Impl rule__ConditionEdge__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__ConditionEdge__Group__0__Impl();
@@ -18241,20 +18431,20 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__0__Impl"
-    // InternalHenshin_text.g:5756:1: rule__ConditionEdge__Group__0__Impl : ( '(' ) ;
+    // InternalHenshin_text.g:5805:1: rule__ConditionEdge__Group__0__Impl : ( '(' ) ;
     public final void rule__ConditionEdge__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5760:1: ( ( '(' ) )
-            // InternalHenshin_text.g:5761:1: ( '(' )
+            // InternalHenshin_text.g:5809:1: ( ( '(' ) )
+            // InternalHenshin_text.g:5810:1: ( '(' )
             {
-            // InternalHenshin_text.g:5761:1: ( '(' )
-            // InternalHenshin_text.g:5762:2: '('
+            // InternalHenshin_text.g:5810:1: ( '(' )
+            // InternalHenshin_text.g:5811:2: '('
             {
              before(grammarAccess.getConditionEdgeAccess().getLeftParenthesisKeyword_0()); 
-            match(input,66,FOLLOW_2); 
+            match(input,70,FOLLOW_2); 
              after(grammarAccess.getConditionEdgeAccess().getLeftParenthesisKeyword_0()); 
 
             }
@@ -18278,16 +18468,16 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__1"
-    // InternalHenshin_text.g:5771:1: rule__ConditionEdge__Group__1 : rule__ConditionEdge__Group__1__Impl rule__ConditionEdge__Group__2 ;
+    // InternalHenshin_text.g:5820:1: rule__ConditionEdge__Group__1 : rule__ConditionEdge__Group__1__Impl rule__ConditionEdge__Group__2 ;
     public final void rule__ConditionEdge__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5775:1: ( rule__ConditionEdge__Group__1__Impl rule__ConditionEdge__Group__2 )
-            // InternalHenshin_text.g:5776:2: rule__ConditionEdge__Group__1__Impl rule__ConditionEdge__Group__2
+            // InternalHenshin_text.g:5824:1: ( rule__ConditionEdge__Group__1__Impl rule__ConditionEdge__Group__2 )
+            // InternalHenshin_text.g:5825:2: rule__ConditionEdge__Group__1__Impl rule__ConditionEdge__Group__2
             {
-            pushFollow(FOLLOW_26);
+            pushFollow(FOLLOW_27);
             rule__ConditionEdge__Group__1__Impl();
 
             state._fsp--;
@@ -18316,21 +18506,21 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__1__Impl"
-    // InternalHenshin_text.g:5783:1: rule__ConditionEdge__Group__1__Impl : ( ( rule__ConditionEdge__SourceAssignment_1 ) ) ;
+    // InternalHenshin_text.g:5832:1: rule__ConditionEdge__Group__1__Impl : ( ( rule__ConditionEdge__SourceAssignment_1 ) ) ;
     public final void rule__ConditionEdge__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5787:1: ( ( ( rule__ConditionEdge__SourceAssignment_1 ) ) )
-            // InternalHenshin_text.g:5788:1: ( ( rule__ConditionEdge__SourceAssignment_1 ) )
+            // InternalHenshin_text.g:5836:1: ( ( ( rule__ConditionEdge__SourceAssignment_1 ) ) )
+            // InternalHenshin_text.g:5837:1: ( ( rule__ConditionEdge__SourceAssignment_1 ) )
             {
-            // InternalHenshin_text.g:5788:1: ( ( rule__ConditionEdge__SourceAssignment_1 ) )
-            // InternalHenshin_text.g:5789:2: ( rule__ConditionEdge__SourceAssignment_1 )
+            // InternalHenshin_text.g:5837:1: ( ( rule__ConditionEdge__SourceAssignment_1 ) )
+            // InternalHenshin_text.g:5838:2: ( rule__ConditionEdge__SourceAssignment_1 )
             {
              before(grammarAccess.getConditionEdgeAccess().getSourceAssignment_1()); 
-            // InternalHenshin_text.g:5790:2: ( rule__ConditionEdge__SourceAssignment_1 )
-            // InternalHenshin_text.g:5790:3: rule__ConditionEdge__SourceAssignment_1
+            // InternalHenshin_text.g:5839:2: ( rule__ConditionEdge__SourceAssignment_1 )
+            // InternalHenshin_text.g:5839:3: rule__ConditionEdge__SourceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__ConditionEdge__SourceAssignment_1();
@@ -18363,14 +18553,14 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__2"
-    // InternalHenshin_text.g:5798:1: rule__ConditionEdge__Group__2 : rule__ConditionEdge__Group__2__Impl rule__ConditionEdge__Group__3 ;
+    // InternalHenshin_text.g:5847:1: rule__ConditionEdge__Group__2 : rule__ConditionEdge__Group__2__Impl rule__ConditionEdge__Group__3 ;
     public final void rule__ConditionEdge__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5802:1: ( rule__ConditionEdge__Group__2__Impl rule__ConditionEdge__Group__3 )
-            // InternalHenshin_text.g:5803:2: rule__ConditionEdge__Group__2__Impl rule__ConditionEdge__Group__3
+            // InternalHenshin_text.g:5851:1: ( rule__ConditionEdge__Group__2__Impl rule__ConditionEdge__Group__3 )
+            // InternalHenshin_text.g:5852:2: rule__ConditionEdge__Group__2__Impl rule__ConditionEdge__Group__3
             {
             pushFollow(FOLLOW_7);
             rule__ConditionEdge__Group__2__Impl();
@@ -18401,20 +18591,20 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__2__Impl"
-    // InternalHenshin_text.g:5810:1: rule__ConditionEdge__Group__2__Impl : ( '->' ) ;
+    // InternalHenshin_text.g:5859:1: rule__ConditionEdge__Group__2__Impl : ( '->' ) ;
     public final void rule__ConditionEdge__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5814:1: ( ( '->' ) )
-            // InternalHenshin_text.g:5815:1: ( '->' )
+            // InternalHenshin_text.g:5863:1: ( ( '->' ) )
+            // InternalHenshin_text.g:5864:1: ( '->' )
             {
-            // InternalHenshin_text.g:5815:1: ( '->' )
-            // InternalHenshin_text.g:5816:2: '->'
+            // InternalHenshin_text.g:5864:1: ( '->' )
+            // InternalHenshin_text.g:5865:2: '->'
             {
              before(grammarAccess.getConditionEdgeAccess().getHyphenMinusGreaterThanSignKeyword_2()); 
-            match(input,80,FOLLOW_2); 
+            match(input,84,FOLLOW_2); 
              after(grammarAccess.getConditionEdgeAccess().getHyphenMinusGreaterThanSignKeyword_2()); 
 
             }
@@ -18438,16 +18628,16 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__3"
-    // InternalHenshin_text.g:5825:1: rule__ConditionEdge__Group__3 : rule__ConditionEdge__Group__3__Impl rule__ConditionEdge__Group__4 ;
+    // InternalHenshin_text.g:5874:1: rule__ConditionEdge__Group__3 : rule__ConditionEdge__Group__3__Impl rule__ConditionEdge__Group__4 ;
     public final void rule__ConditionEdge__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5829:1: ( rule__ConditionEdge__Group__3__Impl rule__ConditionEdge__Group__4 )
-            // InternalHenshin_text.g:5830:2: rule__ConditionEdge__Group__3__Impl rule__ConditionEdge__Group__4
+            // InternalHenshin_text.g:5878:1: ( rule__ConditionEdge__Group__3__Impl rule__ConditionEdge__Group__4 )
+            // InternalHenshin_text.g:5879:2: rule__ConditionEdge__Group__3__Impl rule__ConditionEdge__Group__4
             {
-            pushFollow(FOLLOW_27);
+            pushFollow(FOLLOW_28);
             rule__ConditionEdge__Group__3__Impl();
 
             state._fsp--;
@@ -18476,21 +18666,21 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__3__Impl"
-    // InternalHenshin_text.g:5837:1: rule__ConditionEdge__Group__3__Impl : ( ( rule__ConditionEdge__TargetAssignment_3 ) ) ;
+    // InternalHenshin_text.g:5886:1: rule__ConditionEdge__Group__3__Impl : ( ( rule__ConditionEdge__TargetAssignment_3 ) ) ;
     public final void rule__ConditionEdge__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5841:1: ( ( ( rule__ConditionEdge__TargetAssignment_3 ) ) )
-            // InternalHenshin_text.g:5842:1: ( ( rule__ConditionEdge__TargetAssignment_3 ) )
+            // InternalHenshin_text.g:5890:1: ( ( ( rule__ConditionEdge__TargetAssignment_3 ) ) )
+            // InternalHenshin_text.g:5891:1: ( ( rule__ConditionEdge__TargetAssignment_3 ) )
             {
-            // InternalHenshin_text.g:5842:1: ( ( rule__ConditionEdge__TargetAssignment_3 ) )
-            // InternalHenshin_text.g:5843:2: ( rule__ConditionEdge__TargetAssignment_3 )
+            // InternalHenshin_text.g:5891:1: ( ( rule__ConditionEdge__TargetAssignment_3 ) )
+            // InternalHenshin_text.g:5892:2: ( rule__ConditionEdge__TargetAssignment_3 )
             {
              before(grammarAccess.getConditionEdgeAccess().getTargetAssignment_3()); 
-            // InternalHenshin_text.g:5844:2: ( rule__ConditionEdge__TargetAssignment_3 )
-            // InternalHenshin_text.g:5844:3: rule__ConditionEdge__TargetAssignment_3
+            // InternalHenshin_text.g:5893:2: ( rule__ConditionEdge__TargetAssignment_3 )
+            // InternalHenshin_text.g:5893:3: rule__ConditionEdge__TargetAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__ConditionEdge__TargetAssignment_3();
@@ -18523,14 +18713,14 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__4"
-    // InternalHenshin_text.g:5852:1: rule__ConditionEdge__Group__4 : rule__ConditionEdge__Group__4__Impl rule__ConditionEdge__Group__5 ;
+    // InternalHenshin_text.g:5901:1: rule__ConditionEdge__Group__4 : rule__ConditionEdge__Group__4__Impl rule__ConditionEdge__Group__5 ;
     public final void rule__ConditionEdge__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5856:1: ( rule__ConditionEdge__Group__4__Impl rule__ConditionEdge__Group__5 )
-            // InternalHenshin_text.g:5857:2: rule__ConditionEdge__Group__4__Impl rule__ConditionEdge__Group__5
+            // InternalHenshin_text.g:5905:1: ( rule__ConditionEdge__Group__4__Impl rule__ConditionEdge__Group__5 )
+            // InternalHenshin_text.g:5906:2: rule__ConditionEdge__Group__4__Impl rule__ConditionEdge__Group__5
             {
             pushFollow(FOLLOW_7);
             rule__ConditionEdge__Group__4__Impl();
@@ -18561,20 +18751,20 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__4__Impl"
-    // InternalHenshin_text.g:5864:1: rule__ConditionEdge__Group__4__Impl : ( ':' ) ;
+    // InternalHenshin_text.g:5913:1: rule__ConditionEdge__Group__4__Impl : ( ':' ) ;
     public final void rule__ConditionEdge__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5868:1: ( ( ':' ) )
-            // InternalHenshin_text.g:5869:1: ( ':' )
+            // InternalHenshin_text.g:5917:1: ( ( ':' ) )
+            // InternalHenshin_text.g:5918:1: ( ':' )
             {
-            // InternalHenshin_text.g:5869:1: ( ':' )
-            // InternalHenshin_text.g:5870:2: ':'
+            // InternalHenshin_text.g:5918:1: ( ':' )
+            // InternalHenshin_text.g:5919:2: ':'
             {
              before(grammarAccess.getConditionEdgeAccess().getColonKeyword_4()); 
-            match(input,81,FOLLOW_2); 
+            match(input,85,FOLLOW_2); 
              after(grammarAccess.getConditionEdgeAccess().getColonKeyword_4()); 
 
             }
@@ -18598,16 +18788,16 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__5"
-    // InternalHenshin_text.g:5879:1: rule__ConditionEdge__Group__5 : rule__ConditionEdge__Group__5__Impl rule__ConditionEdge__Group__6 ;
+    // InternalHenshin_text.g:5928:1: rule__ConditionEdge__Group__5 : rule__ConditionEdge__Group__5__Impl rule__ConditionEdge__Group__6 ;
     public final void rule__ConditionEdge__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5883:1: ( rule__ConditionEdge__Group__5__Impl rule__ConditionEdge__Group__6 )
-            // InternalHenshin_text.g:5884:2: rule__ConditionEdge__Group__5__Impl rule__ConditionEdge__Group__6
+            // InternalHenshin_text.g:5932:1: ( rule__ConditionEdge__Group__5__Impl rule__ConditionEdge__Group__6 )
+            // InternalHenshin_text.g:5933:2: rule__ConditionEdge__Group__5__Impl rule__ConditionEdge__Group__6
             {
-            pushFollow(FOLLOW_28);
+            pushFollow(FOLLOW_29);
             rule__ConditionEdge__Group__5__Impl();
 
             state._fsp--;
@@ -18636,21 +18826,21 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__5__Impl"
-    // InternalHenshin_text.g:5891:1: rule__ConditionEdge__Group__5__Impl : ( ( rule__ConditionEdge__TypeAssignment_5 ) ) ;
+    // InternalHenshin_text.g:5940:1: rule__ConditionEdge__Group__5__Impl : ( ( rule__ConditionEdge__TypeAssignment_5 ) ) ;
     public final void rule__ConditionEdge__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5895:1: ( ( ( rule__ConditionEdge__TypeAssignment_5 ) ) )
-            // InternalHenshin_text.g:5896:1: ( ( rule__ConditionEdge__TypeAssignment_5 ) )
+            // InternalHenshin_text.g:5944:1: ( ( ( rule__ConditionEdge__TypeAssignment_5 ) ) )
+            // InternalHenshin_text.g:5945:1: ( ( rule__ConditionEdge__TypeAssignment_5 ) )
             {
-            // InternalHenshin_text.g:5896:1: ( ( rule__ConditionEdge__TypeAssignment_5 ) )
-            // InternalHenshin_text.g:5897:2: ( rule__ConditionEdge__TypeAssignment_5 )
+            // InternalHenshin_text.g:5945:1: ( ( rule__ConditionEdge__TypeAssignment_5 ) )
+            // InternalHenshin_text.g:5946:2: ( rule__ConditionEdge__TypeAssignment_5 )
             {
              before(grammarAccess.getConditionEdgeAccess().getTypeAssignment_5()); 
-            // InternalHenshin_text.g:5898:2: ( rule__ConditionEdge__TypeAssignment_5 )
-            // InternalHenshin_text.g:5898:3: rule__ConditionEdge__TypeAssignment_5
+            // InternalHenshin_text.g:5947:2: ( rule__ConditionEdge__TypeAssignment_5 )
+            // InternalHenshin_text.g:5947:3: rule__ConditionEdge__TypeAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__ConditionEdge__TypeAssignment_5();
@@ -18683,14 +18873,14 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__6"
-    // InternalHenshin_text.g:5906:1: rule__ConditionEdge__Group__6 : rule__ConditionEdge__Group__6__Impl ;
+    // InternalHenshin_text.g:5955:1: rule__ConditionEdge__Group__6 : rule__ConditionEdge__Group__6__Impl ;
     public final void rule__ConditionEdge__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5910:1: ( rule__ConditionEdge__Group__6__Impl )
-            // InternalHenshin_text.g:5911:2: rule__ConditionEdge__Group__6__Impl
+            // InternalHenshin_text.g:5959:1: ( rule__ConditionEdge__Group__6__Impl )
+            // InternalHenshin_text.g:5960:2: rule__ConditionEdge__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ConditionEdge__Group__6__Impl();
@@ -18716,20 +18906,20 @@
 
 
     // $ANTLR start "rule__ConditionEdge__Group__6__Impl"
-    // InternalHenshin_text.g:5917:1: rule__ConditionEdge__Group__6__Impl : ( ')' ) ;
+    // InternalHenshin_text.g:5966:1: rule__ConditionEdge__Group__6__Impl : ( ')' ) ;
     public final void rule__ConditionEdge__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5921:1: ( ( ')' ) )
-            // InternalHenshin_text.g:5922:1: ( ')' )
+            // InternalHenshin_text.g:5970:1: ( ( ')' ) )
+            // InternalHenshin_text.g:5971:1: ( ')' )
             {
-            // InternalHenshin_text.g:5922:1: ( ')' )
-            // InternalHenshin_text.g:5923:2: ')'
+            // InternalHenshin_text.g:5971:1: ( ')' )
+            // InternalHenshin_text.g:5972:2: ')'
             {
              before(grammarAccess.getConditionEdgeAccess().getRightParenthesisKeyword_6()); 
-            match(input,67,FOLLOW_2); 
+            match(input,71,FOLLOW_2); 
              after(grammarAccess.getConditionEdgeAccess().getRightParenthesisKeyword_6()); 
 
             }
@@ -18753,14 +18943,14 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group__0"
-    // InternalHenshin_text.g:5933:1: rule__ConditionNode__Group__0 : rule__ConditionNode__Group__0__Impl rule__ConditionNode__Group__1 ;
+    // InternalHenshin_text.g:5982:1: rule__ConditionNode__Group__0 : rule__ConditionNode__Group__0__Impl rule__ConditionNode__Group__1 ;
     public final void rule__ConditionNode__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5937:1: ( rule__ConditionNode__Group__0__Impl rule__ConditionNode__Group__1 )
-            // InternalHenshin_text.g:5938:2: rule__ConditionNode__Group__0__Impl rule__ConditionNode__Group__1
+            // InternalHenshin_text.g:5986:1: ( rule__ConditionNode__Group__0__Impl rule__ConditionNode__Group__1 )
+            // InternalHenshin_text.g:5987:2: rule__ConditionNode__Group__0__Impl rule__ConditionNode__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__ConditionNode__Group__0__Impl();
@@ -18791,20 +18981,20 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group__0__Impl"
-    // InternalHenshin_text.g:5945:1: rule__ConditionNode__Group__0__Impl : ( 'node' ) ;
+    // InternalHenshin_text.g:5994:1: rule__ConditionNode__Group__0__Impl : ( 'node' ) ;
     public final void rule__ConditionNode__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5949:1: ( ( 'node' ) )
-            // InternalHenshin_text.g:5950:1: ( 'node' )
+            // InternalHenshin_text.g:5998:1: ( ( 'node' ) )
+            // InternalHenshin_text.g:5999:1: ( 'node' )
             {
-            // InternalHenshin_text.g:5950:1: ( 'node' )
-            // InternalHenshin_text.g:5951:2: 'node'
+            // InternalHenshin_text.g:5999:1: ( 'node' )
+            // InternalHenshin_text.g:6000:2: 'node'
             {
              before(grammarAccess.getConditionNodeAccess().getNodeKeyword_0()); 
-            match(input,82,FOLLOW_2); 
+            match(input,86,FOLLOW_2); 
              after(grammarAccess.getConditionNodeAccess().getNodeKeyword_0()); 
 
             }
@@ -18828,16 +19018,16 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group__1"
-    // InternalHenshin_text.g:5960:1: rule__ConditionNode__Group__1 : rule__ConditionNode__Group__1__Impl rule__ConditionNode__Group__2 ;
+    // InternalHenshin_text.g:6009:1: rule__ConditionNode__Group__1 : rule__ConditionNode__Group__1__Impl rule__ConditionNode__Group__2 ;
     public final void rule__ConditionNode__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5964:1: ( rule__ConditionNode__Group__1__Impl rule__ConditionNode__Group__2 )
-            // InternalHenshin_text.g:5965:2: rule__ConditionNode__Group__1__Impl rule__ConditionNode__Group__2
+            // InternalHenshin_text.g:6013:1: ( rule__ConditionNode__Group__1__Impl rule__ConditionNode__Group__2 )
+            // InternalHenshin_text.g:6014:2: rule__ConditionNode__Group__1__Impl rule__ConditionNode__Group__2
             {
-            pushFollow(FOLLOW_27);
+            pushFollow(FOLLOW_28);
             rule__ConditionNode__Group__1__Impl();
 
             state._fsp--;
@@ -18866,21 +19056,21 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group__1__Impl"
-    // InternalHenshin_text.g:5972:1: rule__ConditionNode__Group__1__Impl : ( ( rule__ConditionNode__NameAssignment_1 ) ) ;
+    // InternalHenshin_text.g:6021:1: rule__ConditionNode__Group__1__Impl : ( ( rule__ConditionNode__NameAssignment_1 ) ) ;
     public final void rule__ConditionNode__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5976:1: ( ( ( rule__ConditionNode__NameAssignment_1 ) ) )
-            // InternalHenshin_text.g:5977:1: ( ( rule__ConditionNode__NameAssignment_1 ) )
+            // InternalHenshin_text.g:6025:1: ( ( ( rule__ConditionNode__NameAssignment_1 ) ) )
+            // InternalHenshin_text.g:6026:1: ( ( rule__ConditionNode__NameAssignment_1 ) )
             {
-            // InternalHenshin_text.g:5977:1: ( ( rule__ConditionNode__NameAssignment_1 ) )
-            // InternalHenshin_text.g:5978:2: ( rule__ConditionNode__NameAssignment_1 )
+            // InternalHenshin_text.g:6026:1: ( ( rule__ConditionNode__NameAssignment_1 ) )
+            // InternalHenshin_text.g:6027:2: ( rule__ConditionNode__NameAssignment_1 )
             {
              before(grammarAccess.getConditionNodeAccess().getNameAssignment_1()); 
-            // InternalHenshin_text.g:5979:2: ( rule__ConditionNode__NameAssignment_1 )
-            // InternalHenshin_text.g:5979:3: rule__ConditionNode__NameAssignment_1
+            // InternalHenshin_text.g:6028:2: ( rule__ConditionNode__NameAssignment_1 )
+            // InternalHenshin_text.g:6028:3: rule__ConditionNode__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__ConditionNode__NameAssignment_1();
@@ -18913,14 +19103,14 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group__2"
-    // InternalHenshin_text.g:5987:1: rule__ConditionNode__Group__2 : rule__ConditionNode__Group__2__Impl rule__ConditionNode__Group__3 ;
+    // InternalHenshin_text.g:6036:1: rule__ConditionNode__Group__2 : rule__ConditionNode__Group__2__Impl rule__ConditionNode__Group__3 ;
     public final void rule__ConditionNode__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:5991:1: ( rule__ConditionNode__Group__2__Impl rule__ConditionNode__Group__3 )
-            // InternalHenshin_text.g:5992:2: rule__ConditionNode__Group__2__Impl rule__ConditionNode__Group__3
+            // InternalHenshin_text.g:6040:1: ( rule__ConditionNode__Group__2__Impl rule__ConditionNode__Group__3 )
+            // InternalHenshin_text.g:6041:2: rule__ConditionNode__Group__2__Impl rule__ConditionNode__Group__3
             {
             pushFollow(FOLLOW_7);
             rule__ConditionNode__Group__2__Impl();
@@ -18951,20 +19141,20 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group__2__Impl"
-    // InternalHenshin_text.g:5999:1: rule__ConditionNode__Group__2__Impl : ( ':' ) ;
+    // InternalHenshin_text.g:6048:1: rule__ConditionNode__Group__2__Impl : ( ':' ) ;
     public final void rule__ConditionNode__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6003:1: ( ( ':' ) )
-            // InternalHenshin_text.g:6004:1: ( ':' )
+            // InternalHenshin_text.g:6052:1: ( ( ':' ) )
+            // InternalHenshin_text.g:6053:1: ( ':' )
             {
-            // InternalHenshin_text.g:6004:1: ( ':' )
-            // InternalHenshin_text.g:6005:2: ':'
+            // InternalHenshin_text.g:6053:1: ( ':' )
+            // InternalHenshin_text.g:6054:2: ':'
             {
              before(grammarAccess.getConditionNodeAccess().getColonKeyword_2()); 
-            match(input,81,FOLLOW_2); 
+            match(input,85,FOLLOW_2); 
              after(grammarAccess.getConditionNodeAccess().getColonKeyword_2()); 
 
             }
@@ -18988,14 +19178,14 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group__3"
-    // InternalHenshin_text.g:6014:1: rule__ConditionNode__Group__3 : rule__ConditionNode__Group__3__Impl rule__ConditionNode__Group__4 ;
+    // InternalHenshin_text.g:6063:1: rule__ConditionNode__Group__3 : rule__ConditionNode__Group__3__Impl rule__ConditionNode__Group__4 ;
     public final void rule__ConditionNode__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6018:1: ( rule__ConditionNode__Group__3__Impl rule__ConditionNode__Group__4 )
-            // InternalHenshin_text.g:6019:2: rule__ConditionNode__Group__3__Impl rule__ConditionNode__Group__4
+            // InternalHenshin_text.g:6067:1: ( rule__ConditionNode__Group__3__Impl rule__ConditionNode__Group__4 )
+            // InternalHenshin_text.g:6068:2: rule__ConditionNode__Group__3__Impl rule__ConditionNode__Group__4
             {
             pushFollow(FOLLOW_12);
             rule__ConditionNode__Group__3__Impl();
@@ -19026,21 +19216,21 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group__3__Impl"
-    // InternalHenshin_text.g:6026:1: rule__ConditionNode__Group__3__Impl : ( ( rule__ConditionNode__TypeAssignment_3 ) ) ;
+    // InternalHenshin_text.g:6075:1: rule__ConditionNode__Group__3__Impl : ( ( rule__ConditionNode__TypeAssignment_3 ) ) ;
     public final void rule__ConditionNode__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6030:1: ( ( ( rule__ConditionNode__TypeAssignment_3 ) ) )
-            // InternalHenshin_text.g:6031:1: ( ( rule__ConditionNode__TypeAssignment_3 ) )
+            // InternalHenshin_text.g:6079:1: ( ( ( rule__ConditionNode__TypeAssignment_3 ) ) )
+            // InternalHenshin_text.g:6080:1: ( ( rule__ConditionNode__TypeAssignment_3 ) )
             {
-            // InternalHenshin_text.g:6031:1: ( ( rule__ConditionNode__TypeAssignment_3 ) )
-            // InternalHenshin_text.g:6032:2: ( rule__ConditionNode__TypeAssignment_3 )
+            // InternalHenshin_text.g:6080:1: ( ( rule__ConditionNode__TypeAssignment_3 ) )
+            // InternalHenshin_text.g:6081:2: ( rule__ConditionNode__TypeAssignment_3 )
             {
              before(grammarAccess.getConditionNodeAccess().getTypeAssignment_3()); 
-            // InternalHenshin_text.g:6033:2: ( rule__ConditionNode__TypeAssignment_3 )
-            // InternalHenshin_text.g:6033:3: rule__ConditionNode__TypeAssignment_3
+            // InternalHenshin_text.g:6082:2: ( rule__ConditionNode__TypeAssignment_3 )
+            // InternalHenshin_text.g:6082:3: rule__ConditionNode__TypeAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__ConditionNode__TypeAssignment_3();
@@ -19073,14 +19263,14 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group__4"
-    // InternalHenshin_text.g:6041:1: rule__ConditionNode__Group__4 : rule__ConditionNode__Group__4__Impl ;
+    // InternalHenshin_text.g:6090:1: rule__ConditionNode__Group__4 : rule__ConditionNode__Group__4__Impl ;
     public final void rule__ConditionNode__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6045:1: ( rule__ConditionNode__Group__4__Impl )
-            // InternalHenshin_text.g:6046:2: rule__ConditionNode__Group__4__Impl
+            // InternalHenshin_text.g:6094:1: ( rule__ConditionNode__Group__4__Impl )
+            // InternalHenshin_text.g:6095:2: rule__ConditionNode__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ConditionNode__Group__4__Impl();
@@ -19106,29 +19296,29 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group__4__Impl"
-    // InternalHenshin_text.g:6052:1: rule__ConditionNode__Group__4__Impl : ( ( rule__ConditionNode__Group_4__0 )? ) ;
+    // InternalHenshin_text.g:6101:1: rule__ConditionNode__Group__4__Impl : ( ( rule__ConditionNode__Group_4__0 )? ) ;
     public final void rule__ConditionNode__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6056:1: ( ( ( rule__ConditionNode__Group_4__0 )? ) )
-            // InternalHenshin_text.g:6057:1: ( ( rule__ConditionNode__Group_4__0 )? )
+            // InternalHenshin_text.g:6105:1: ( ( ( rule__ConditionNode__Group_4__0 )? ) )
+            // InternalHenshin_text.g:6106:1: ( ( rule__ConditionNode__Group_4__0 )? )
             {
-            // InternalHenshin_text.g:6057:1: ( ( rule__ConditionNode__Group_4__0 )? )
-            // InternalHenshin_text.g:6058:2: ( rule__ConditionNode__Group_4__0 )?
+            // InternalHenshin_text.g:6106:1: ( ( rule__ConditionNode__Group_4__0 )? )
+            // InternalHenshin_text.g:6107:2: ( rule__ConditionNode__Group_4__0 )?
             {
              before(grammarAccess.getConditionNodeAccess().getGroup_4()); 
-            // InternalHenshin_text.g:6059:2: ( rule__ConditionNode__Group_4__0 )?
-            int alt46=2;
-            int LA46_0 = input.LA(1);
+            // InternalHenshin_text.g:6108:2: ( rule__ConditionNode__Group_4__0 )?
+            int alt47=2;
+            int LA47_0 = input.LA(1);
 
-            if ( (LA46_0==68) ) {
-                alt46=1;
+            if ( (LA47_0==72) ) {
+                alt47=1;
             }
-            switch (alt46) {
+            switch (alt47) {
                 case 1 :
-                    // InternalHenshin_text.g:6059:3: rule__ConditionNode__Group_4__0
+                    // InternalHenshin_text.g:6108:3: rule__ConditionNode__Group_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__ConditionNode__Group_4__0();
@@ -19164,16 +19354,16 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group_4__0"
-    // InternalHenshin_text.g:6068:1: rule__ConditionNode__Group_4__0 : rule__ConditionNode__Group_4__0__Impl rule__ConditionNode__Group_4__1 ;
+    // InternalHenshin_text.g:6117:1: rule__ConditionNode__Group_4__0 : rule__ConditionNode__Group_4__0__Impl rule__ConditionNode__Group_4__1 ;
     public final void rule__ConditionNode__Group_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6072:1: ( rule__ConditionNode__Group_4__0__Impl rule__ConditionNode__Group_4__1 )
-            // InternalHenshin_text.g:6073:2: rule__ConditionNode__Group_4__0__Impl rule__ConditionNode__Group_4__1
+            // InternalHenshin_text.g:6121:1: ( rule__ConditionNode__Group_4__0__Impl rule__ConditionNode__Group_4__1 )
+            // InternalHenshin_text.g:6122:2: rule__ConditionNode__Group_4__0__Impl rule__ConditionNode__Group_4__1
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_45);
             rule__ConditionNode__Group_4__0__Impl();
 
             state._fsp--;
@@ -19202,20 +19392,20 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group_4__0__Impl"
-    // InternalHenshin_text.g:6080:1: rule__ConditionNode__Group_4__0__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:6129:1: rule__ConditionNode__Group_4__0__Impl : ( '{' ) ;
     public final void rule__ConditionNode__Group_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6084:1: ( ( '{' ) )
-            // InternalHenshin_text.g:6085:1: ( '{' )
+            // InternalHenshin_text.g:6133:1: ( ( '{' ) )
+            // InternalHenshin_text.g:6134:1: ( '{' )
             {
-            // InternalHenshin_text.g:6085:1: ( '{' )
-            // InternalHenshin_text.g:6086:2: '{'
+            // InternalHenshin_text.g:6134:1: ( '{' )
+            // InternalHenshin_text.g:6135:2: '{'
             {
              before(grammarAccess.getConditionNodeAccess().getLeftCurlyBracketKeyword_4_0()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getConditionNodeAccess().getLeftCurlyBracketKeyword_4_0()); 
 
             }
@@ -19239,16 +19429,16 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group_4__1"
-    // InternalHenshin_text.g:6095:1: rule__ConditionNode__Group_4__1 : rule__ConditionNode__Group_4__1__Impl rule__ConditionNode__Group_4__2 ;
+    // InternalHenshin_text.g:6144:1: rule__ConditionNode__Group_4__1 : rule__ConditionNode__Group_4__1__Impl rule__ConditionNode__Group_4__2 ;
     public final void rule__ConditionNode__Group_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6099:1: ( rule__ConditionNode__Group_4__1__Impl rule__ConditionNode__Group_4__2 )
-            // InternalHenshin_text.g:6100:2: rule__ConditionNode__Group_4__1__Impl rule__ConditionNode__Group_4__2
+            // InternalHenshin_text.g:6148:1: ( rule__ConditionNode__Group_4__1__Impl rule__ConditionNode__Group_4__2 )
+            // InternalHenshin_text.g:6149:2: rule__ConditionNode__Group_4__1__Impl rule__ConditionNode__Group_4__2
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_45);
             rule__ConditionNode__Group_4__1__Impl();
 
             state._fsp--;
@@ -19277,35 +19467,35 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group_4__1__Impl"
-    // InternalHenshin_text.g:6107:1: rule__ConditionNode__Group_4__1__Impl : ( ( rule__ConditionNode__AttributeAssignment_4_1 )* ) ;
+    // InternalHenshin_text.g:6156:1: rule__ConditionNode__Group_4__1__Impl : ( ( rule__ConditionNode__AttributeAssignment_4_1 )* ) ;
     public final void rule__ConditionNode__Group_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6111:1: ( ( ( rule__ConditionNode__AttributeAssignment_4_1 )* ) )
-            // InternalHenshin_text.g:6112:1: ( ( rule__ConditionNode__AttributeAssignment_4_1 )* )
+            // InternalHenshin_text.g:6160:1: ( ( ( rule__ConditionNode__AttributeAssignment_4_1 )* ) )
+            // InternalHenshin_text.g:6161:1: ( ( rule__ConditionNode__AttributeAssignment_4_1 )* )
             {
-            // InternalHenshin_text.g:6112:1: ( ( rule__ConditionNode__AttributeAssignment_4_1 )* )
-            // InternalHenshin_text.g:6113:2: ( rule__ConditionNode__AttributeAssignment_4_1 )*
+            // InternalHenshin_text.g:6161:1: ( ( rule__ConditionNode__AttributeAssignment_4_1 )* )
+            // InternalHenshin_text.g:6162:2: ( rule__ConditionNode__AttributeAssignment_4_1 )*
             {
              before(grammarAccess.getConditionNodeAccess().getAttributeAssignment_4_1()); 
-            // InternalHenshin_text.g:6114:2: ( rule__ConditionNode__AttributeAssignment_4_1 )*
-            loop47:
+            // InternalHenshin_text.g:6163:2: ( rule__ConditionNode__AttributeAssignment_4_1 )*
+            loop48:
             do {
-                int alt47=2;
-                int LA47_0 = input.LA(1);
+                int alt48=2;
+                int LA48_0 = input.LA(1);
 
-                if ( (LA47_0==RULE_ID) ) {
-                    alt47=1;
+                if ( (LA48_0==RULE_ID) ) {
+                    alt48=1;
                 }
 
 
-                switch (alt47) {
+                switch (alt48) {
             	case 1 :
-            	    // InternalHenshin_text.g:6114:3: rule__ConditionNode__AttributeAssignment_4_1
+            	    // InternalHenshin_text.g:6163:3: rule__ConditionNode__AttributeAssignment_4_1
             	    {
-            	    pushFollow(FOLLOW_45);
+            	    pushFollow(FOLLOW_46);
             	    rule__ConditionNode__AttributeAssignment_4_1();
 
             	    state._fsp--;
@@ -19315,7 +19505,7 @@
             	    break;
 
             	default :
-            	    break loop47;
+            	    break loop48;
                 }
             } while (true);
 
@@ -19342,14 +19532,14 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group_4__2"
-    // InternalHenshin_text.g:6122:1: rule__ConditionNode__Group_4__2 : rule__ConditionNode__Group_4__2__Impl ;
+    // InternalHenshin_text.g:6171:1: rule__ConditionNode__Group_4__2 : rule__ConditionNode__Group_4__2__Impl ;
     public final void rule__ConditionNode__Group_4__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6126:1: ( rule__ConditionNode__Group_4__2__Impl )
-            // InternalHenshin_text.g:6127:2: rule__ConditionNode__Group_4__2__Impl
+            // InternalHenshin_text.g:6175:1: ( rule__ConditionNode__Group_4__2__Impl )
+            // InternalHenshin_text.g:6176:2: rule__ConditionNode__Group_4__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ConditionNode__Group_4__2__Impl();
@@ -19375,20 +19565,20 @@
 
 
     // $ANTLR start "rule__ConditionNode__Group_4__2__Impl"
-    // InternalHenshin_text.g:6133:1: rule__ConditionNode__Group_4__2__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:6182:1: rule__ConditionNode__Group_4__2__Impl : ( '}' ) ;
     public final void rule__ConditionNode__Group_4__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6137:1: ( ( '}' ) )
-            // InternalHenshin_text.g:6138:1: ( '}' )
+            // InternalHenshin_text.g:6186:1: ( ( '}' ) )
+            // InternalHenshin_text.g:6187:1: ( '}' )
             {
-            // InternalHenshin_text.g:6138:1: ( '}' )
-            // InternalHenshin_text.g:6139:2: '}'
+            // InternalHenshin_text.g:6187:1: ( '}' )
+            // InternalHenshin_text.g:6188:2: '}'
             {
              before(grammarAccess.getConditionNodeAccess().getRightCurlyBracketKeyword_4_2()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getConditionNodeAccess().getRightCurlyBracketKeyword_4_2()); 
 
             }
@@ -19412,14 +19602,14 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group__0"
-    // InternalHenshin_text.g:6149:1: rule__ConditionReuseNode__Group__0 : rule__ConditionReuseNode__Group__0__Impl rule__ConditionReuseNode__Group__1 ;
+    // InternalHenshin_text.g:6198:1: rule__ConditionReuseNode__Group__0 : rule__ConditionReuseNode__Group__0__Impl rule__ConditionReuseNode__Group__1 ;
     public final void rule__ConditionReuseNode__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6153:1: ( rule__ConditionReuseNode__Group__0__Impl rule__ConditionReuseNode__Group__1 )
-            // InternalHenshin_text.g:6154:2: rule__ConditionReuseNode__Group__0__Impl rule__ConditionReuseNode__Group__1
+            // InternalHenshin_text.g:6202:1: ( rule__ConditionReuseNode__Group__0__Impl rule__ConditionReuseNode__Group__1 )
+            // InternalHenshin_text.g:6203:2: rule__ConditionReuseNode__Group__0__Impl rule__ConditionReuseNode__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__ConditionReuseNode__Group__0__Impl();
@@ -19450,20 +19640,20 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group__0__Impl"
-    // InternalHenshin_text.g:6161:1: rule__ConditionReuseNode__Group__0__Impl : ( 'reuse' ) ;
+    // InternalHenshin_text.g:6210:1: rule__ConditionReuseNode__Group__0__Impl : ( 'reuse' ) ;
     public final void rule__ConditionReuseNode__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6165:1: ( ( 'reuse' ) )
-            // InternalHenshin_text.g:6166:1: ( 'reuse' )
+            // InternalHenshin_text.g:6214:1: ( ( 'reuse' ) )
+            // InternalHenshin_text.g:6215:1: ( 'reuse' )
             {
-            // InternalHenshin_text.g:6166:1: ( 'reuse' )
-            // InternalHenshin_text.g:6167:2: 'reuse'
+            // InternalHenshin_text.g:6215:1: ( 'reuse' )
+            // InternalHenshin_text.g:6216:2: 'reuse'
             {
              before(grammarAccess.getConditionReuseNodeAccess().getReuseKeyword_0()); 
-            match(input,83,FOLLOW_2); 
+            match(input,87,FOLLOW_2); 
              after(grammarAccess.getConditionReuseNodeAccess().getReuseKeyword_0()); 
 
             }
@@ -19487,14 +19677,14 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group__1"
-    // InternalHenshin_text.g:6176:1: rule__ConditionReuseNode__Group__1 : rule__ConditionReuseNode__Group__1__Impl rule__ConditionReuseNode__Group__2 ;
+    // InternalHenshin_text.g:6225:1: rule__ConditionReuseNode__Group__1 : rule__ConditionReuseNode__Group__1__Impl rule__ConditionReuseNode__Group__2 ;
     public final void rule__ConditionReuseNode__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6180:1: ( rule__ConditionReuseNode__Group__1__Impl rule__ConditionReuseNode__Group__2 )
-            // InternalHenshin_text.g:6181:2: rule__ConditionReuseNode__Group__1__Impl rule__ConditionReuseNode__Group__2
+            // InternalHenshin_text.g:6229:1: ( rule__ConditionReuseNode__Group__1__Impl rule__ConditionReuseNode__Group__2 )
+            // InternalHenshin_text.g:6230:2: rule__ConditionReuseNode__Group__1__Impl rule__ConditionReuseNode__Group__2
             {
             pushFollow(FOLLOW_12);
             rule__ConditionReuseNode__Group__1__Impl();
@@ -19525,21 +19715,21 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group__1__Impl"
-    // InternalHenshin_text.g:6188:1: rule__ConditionReuseNode__Group__1__Impl : ( ( rule__ConditionReuseNode__NameAssignment_1 ) ) ;
+    // InternalHenshin_text.g:6237:1: rule__ConditionReuseNode__Group__1__Impl : ( ( rule__ConditionReuseNode__NameAssignment_1 ) ) ;
     public final void rule__ConditionReuseNode__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6192:1: ( ( ( rule__ConditionReuseNode__NameAssignment_1 ) ) )
-            // InternalHenshin_text.g:6193:1: ( ( rule__ConditionReuseNode__NameAssignment_1 ) )
+            // InternalHenshin_text.g:6241:1: ( ( ( rule__ConditionReuseNode__NameAssignment_1 ) ) )
+            // InternalHenshin_text.g:6242:1: ( ( rule__ConditionReuseNode__NameAssignment_1 ) )
             {
-            // InternalHenshin_text.g:6193:1: ( ( rule__ConditionReuseNode__NameAssignment_1 ) )
-            // InternalHenshin_text.g:6194:2: ( rule__ConditionReuseNode__NameAssignment_1 )
+            // InternalHenshin_text.g:6242:1: ( ( rule__ConditionReuseNode__NameAssignment_1 ) )
+            // InternalHenshin_text.g:6243:2: ( rule__ConditionReuseNode__NameAssignment_1 )
             {
              before(grammarAccess.getConditionReuseNodeAccess().getNameAssignment_1()); 
-            // InternalHenshin_text.g:6195:2: ( rule__ConditionReuseNode__NameAssignment_1 )
-            // InternalHenshin_text.g:6195:3: rule__ConditionReuseNode__NameAssignment_1
+            // InternalHenshin_text.g:6244:2: ( rule__ConditionReuseNode__NameAssignment_1 )
+            // InternalHenshin_text.g:6244:3: rule__ConditionReuseNode__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__ConditionReuseNode__NameAssignment_1();
@@ -19572,14 +19762,14 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group__2"
-    // InternalHenshin_text.g:6203:1: rule__ConditionReuseNode__Group__2 : rule__ConditionReuseNode__Group__2__Impl ;
+    // InternalHenshin_text.g:6252:1: rule__ConditionReuseNode__Group__2 : rule__ConditionReuseNode__Group__2__Impl ;
     public final void rule__ConditionReuseNode__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6207:1: ( rule__ConditionReuseNode__Group__2__Impl )
-            // InternalHenshin_text.g:6208:2: rule__ConditionReuseNode__Group__2__Impl
+            // InternalHenshin_text.g:6256:1: ( rule__ConditionReuseNode__Group__2__Impl )
+            // InternalHenshin_text.g:6257:2: rule__ConditionReuseNode__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ConditionReuseNode__Group__2__Impl();
@@ -19605,29 +19795,29 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group__2__Impl"
-    // InternalHenshin_text.g:6214:1: rule__ConditionReuseNode__Group__2__Impl : ( ( rule__ConditionReuseNode__Group_2__0 )? ) ;
+    // InternalHenshin_text.g:6263:1: rule__ConditionReuseNode__Group__2__Impl : ( ( rule__ConditionReuseNode__Group_2__0 )? ) ;
     public final void rule__ConditionReuseNode__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6218:1: ( ( ( rule__ConditionReuseNode__Group_2__0 )? ) )
-            // InternalHenshin_text.g:6219:1: ( ( rule__ConditionReuseNode__Group_2__0 )? )
+            // InternalHenshin_text.g:6267:1: ( ( ( rule__ConditionReuseNode__Group_2__0 )? ) )
+            // InternalHenshin_text.g:6268:1: ( ( rule__ConditionReuseNode__Group_2__0 )? )
             {
-            // InternalHenshin_text.g:6219:1: ( ( rule__ConditionReuseNode__Group_2__0 )? )
-            // InternalHenshin_text.g:6220:2: ( rule__ConditionReuseNode__Group_2__0 )?
+            // InternalHenshin_text.g:6268:1: ( ( rule__ConditionReuseNode__Group_2__0 )? )
+            // InternalHenshin_text.g:6269:2: ( rule__ConditionReuseNode__Group_2__0 )?
             {
              before(grammarAccess.getConditionReuseNodeAccess().getGroup_2()); 
-            // InternalHenshin_text.g:6221:2: ( rule__ConditionReuseNode__Group_2__0 )?
-            int alt48=2;
-            int LA48_0 = input.LA(1);
+            // InternalHenshin_text.g:6270:2: ( rule__ConditionReuseNode__Group_2__0 )?
+            int alt49=2;
+            int LA49_0 = input.LA(1);
 
-            if ( (LA48_0==68) ) {
-                alt48=1;
+            if ( (LA49_0==72) ) {
+                alt49=1;
             }
-            switch (alt48) {
+            switch (alt49) {
                 case 1 :
-                    // InternalHenshin_text.g:6221:3: rule__ConditionReuseNode__Group_2__0
+                    // InternalHenshin_text.g:6270:3: rule__ConditionReuseNode__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__ConditionReuseNode__Group_2__0();
@@ -19663,16 +19853,16 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group_2__0"
-    // InternalHenshin_text.g:6230:1: rule__ConditionReuseNode__Group_2__0 : rule__ConditionReuseNode__Group_2__0__Impl rule__ConditionReuseNode__Group_2__1 ;
+    // InternalHenshin_text.g:6279:1: rule__ConditionReuseNode__Group_2__0 : rule__ConditionReuseNode__Group_2__0__Impl rule__ConditionReuseNode__Group_2__1 ;
     public final void rule__ConditionReuseNode__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6234:1: ( rule__ConditionReuseNode__Group_2__0__Impl rule__ConditionReuseNode__Group_2__1 )
-            // InternalHenshin_text.g:6235:2: rule__ConditionReuseNode__Group_2__0__Impl rule__ConditionReuseNode__Group_2__1
+            // InternalHenshin_text.g:6283:1: ( rule__ConditionReuseNode__Group_2__0__Impl rule__ConditionReuseNode__Group_2__1 )
+            // InternalHenshin_text.g:6284:2: rule__ConditionReuseNode__Group_2__0__Impl rule__ConditionReuseNode__Group_2__1
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_45);
             rule__ConditionReuseNode__Group_2__0__Impl();
 
             state._fsp--;
@@ -19701,20 +19891,20 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group_2__0__Impl"
-    // InternalHenshin_text.g:6242:1: rule__ConditionReuseNode__Group_2__0__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:6291:1: rule__ConditionReuseNode__Group_2__0__Impl : ( '{' ) ;
     public final void rule__ConditionReuseNode__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6246:1: ( ( '{' ) )
-            // InternalHenshin_text.g:6247:1: ( '{' )
+            // InternalHenshin_text.g:6295:1: ( ( '{' ) )
+            // InternalHenshin_text.g:6296:1: ( '{' )
             {
-            // InternalHenshin_text.g:6247:1: ( '{' )
-            // InternalHenshin_text.g:6248:2: '{'
+            // InternalHenshin_text.g:6296:1: ( '{' )
+            // InternalHenshin_text.g:6297:2: '{'
             {
              before(grammarAccess.getConditionReuseNodeAccess().getLeftCurlyBracketKeyword_2_0()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getConditionReuseNodeAccess().getLeftCurlyBracketKeyword_2_0()); 
 
             }
@@ -19738,16 +19928,16 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group_2__1"
-    // InternalHenshin_text.g:6257:1: rule__ConditionReuseNode__Group_2__1 : rule__ConditionReuseNode__Group_2__1__Impl rule__ConditionReuseNode__Group_2__2 ;
+    // InternalHenshin_text.g:6306:1: rule__ConditionReuseNode__Group_2__1 : rule__ConditionReuseNode__Group_2__1__Impl rule__ConditionReuseNode__Group_2__2 ;
     public final void rule__ConditionReuseNode__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6261:1: ( rule__ConditionReuseNode__Group_2__1__Impl rule__ConditionReuseNode__Group_2__2 )
-            // InternalHenshin_text.g:6262:2: rule__ConditionReuseNode__Group_2__1__Impl rule__ConditionReuseNode__Group_2__2
+            // InternalHenshin_text.g:6310:1: ( rule__ConditionReuseNode__Group_2__1__Impl rule__ConditionReuseNode__Group_2__2 )
+            // InternalHenshin_text.g:6311:2: rule__ConditionReuseNode__Group_2__1__Impl rule__ConditionReuseNode__Group_2__2
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_45);
             rule__ConditionReuseNode__Group_2__1__Impl();
 
             state._fsp--;
@@ -19776,35 +19966,35 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group_2__1__Impl"
-    // InternalHenshin_text.g:6269:1: rule__ConditionReuseNode__Group_2__1__Impl : ( ( rule__ConditionReuseNode__AttributeAssignment_2_1 )* ) ;
+    // InternalHenshin_text.g:6318:1: rule__ConditionReuseNode__Group_2__1__Impl : ( ( rule__ConditionReuseNode__AttributeAssignment_2_1 )* ) ;
     public final void rule__ConditionReuseNode__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6273:1: ( ( ( rule__ConditionReuseNode__AttributeAssignment_2_1 )* ) )
-            // InternalHenshin_text.g:6274:1: ( ( rule__ConditionReuseNode__AttributeAssignment_2_1 )* )
+            // InternalHenshin_text.g:6322:1: ( ( ( rule__ConditionReuseNode__AttributeAssignment_2_1 )* ) )
+            // InternalHenshin_text.g:6323:1: ( ( rule__ConditionReuseNode__AttributeAssignment_2_1 )* )
             {
-            // InternalHenshin_text.g:6274:1: ( ( rule__ConditionReuseNode__AttributeAssignment_2_1 )* )
-            // InternalHenshin_text.g:6275:2: ( rule__ConditionReuseNode__AttributeAssignment_2_1 )*
+            // InternalHenshin_text.g:6323:1: ( ( rule__ConditionReuseNode__AttributeAssignment_2_1 )* )
+            // InternalHenshin_text.g:6324:2: ( rule__ConditionReuseNode__AttributeAssignment_2_1 )*
             {
              before(grammarAccess.getConditionReuseNodeAccess().getAttributeAssignment_2_1()); 
-            // InternalHenshin_text.g:6276:2: ( rule__ConditionReuseNode__AttributeAssignment_2_1 )*
-            loop49:
+            // InternalHenshin_text.g:6325:2: ( rule__ConditionReuseNode__AttributeAssignment_2_1 )*
+            loop50:
             do {
-                int alt49=2;
-                int LA49_0 = input.LA(1);
+                int alt50=2;
+                int LA50_0 = input.LA(1);
 
-                if ( (LA49_0==RULE_ID) ) {
-                    alt49=1;
+                if ( (LA50_0==RULE_ID) ) {
+                    alt50=1;
                 }
 
 
-                switch (alt49) {
+                switch (alt50) {
             	case 1 :
-            	    // InternalHenshin_text.g:6276:3: rule__ConditionReuseNode__AttributeAssignment_2_1
+            	    // InternalHenshin_text.g:6325:3: rule__ConditionReuseNode__AttributeAssignment_2_1
             	    {
-            	    pushFollow(FOLLOW_45);
+            	    pushFollow(FOLLOW_46);
             	    rule__ConditionReuseNode__AttributeAssignment_2_1();
 
             	    state._fsp--;
@@ -19814,7 +20004,7 @@
             	    break;
 
             	default :
-            	    break loop49;
+            	    break loop50;
                 }
             } while (true);
 
@@ -19841,14 +20031,14 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group_2__2"
-    // InternalHenshin_text.g:6284:1: rule__ConditionReuseNode__Group_2__2 : rule__ConditionReuseNode__Group_2__2__Impl ;
+    // InternalHenshin_text.g:6333:1: rule__ConditionReuseNode__Group_2__2 : rule__ConditionReuseNode__Group_2__2__Impl ;
     public final void rule__ConditionReuseNode__Group_2__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6288:1: ( rule__ConditionReuseNode__Group_2__2__Impl )
-            // InternalHenshin_text.g:6289:2: rule__ConditionReuseNode__Group_2__2__Impl
+            // InternalHenshin_text.g:6337:1: ( rule__ConditionReuseNode__Group_2__2__Impl )
+            // InternalHenshin_text.g:6338:2: rule__ConditionReuseNode__Group_2__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ConditionReuseNode__Group_2__2__Impl();
@@ -19874,20 +20064,20 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__Group_2__2__Impl"
-    // InternalHenshin_text.g:6295:1: rule__ConditionReuseNode__Group_2__2__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:6344:1: rule__ConditionReuseNode__Group_2__2__Impl : ( '}' ) ;
     public final void rule__ConditionReuseNode__Group_2__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6299:1: ( ( '}' ) )
-            // InternalHenshin_text.g:6300:1: ( '}' )
+            // InternalHenshin_text.g:6348:1: ( ( '}' ) )
+            // InternalHenshin_text.g:6349:1: ( '}' )
             {
-            // InternalHenshin_text.g:6300:1: ( '}' )
-            // InternalHenshin_text.g:6301:2: '}'
+            // InternalHenshin_text.g:6349:1: ( '}' )
+            // InternalHenshin_text.g:6350:2: '}'
             {
              before(grammarAccess.getConditionReuseNodeAccess().getRightCurlyBracketKeyword_2_2()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getConditionReuseNodeAccess().getRightCurlyBracketKeyword_2_2()); 
 
             }
@@ -19911,16 +20101,16 @@
 
 
     // $ANTLR start "rule__Match__Group__0"
-    // InternalHenshin_text.g:6311:1: rule__Match__Group__0 : rule__Match__Group__0__Impl rule__Match__Group__1 ;
+    // InternalHenshin_text.g:6360:1: rule__Match__Group__0 : rule__Match__Group__0__Impl rule__Match__Group__1 ;
     public final void rule__Match__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6315:1: ( rule__Match__Group__0__Impl rule__Match__Group__1 )
-            // InternalHenshin_text.g:6316:2: rule__Match__Group__0__Impl rule__Match__Group__1
+            // InternalHenshin_text.g:6364:1: ( rule__Match__Group__0__Impl rule__Match__Group__1 )
+            // InternalHenshin_text.g:6365:2: rule__Match__Group__0__Impl rule__Match__Group__1
             {
-            pushFollow(FOLLOW_32);
+            pushFollow(FOLLOW_33);
             rule__Match__Group__0__Impl();
 
             state._fsp--;
@@ -19949,21 +20139,21 @@
 
 
     // $ANTLR start "rule__Match__Group__0__Impl"
-    // InternalHenshin_text.g:6323:1: rule__Match__Group__0__Impl : ( ( rule__Match__NameAssignment_0 ) ) ;
+    // InternalHenshin_text.g:6372:1: rule__Match__Group__0__Impl : ( ( rule__Match__NameAssignment_0 ) ) ;
     public final void rule__Match__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6327:1: ( ( ( rule__Match__NameAssignment_0 ) ) )
-            // InternalHenshin_text.g:6328:1: ( ( rule__Match__NameAssignment_0 ) )
+            // InternalHenshin_text.g:6376:1: ( ( ( rule__Match__NameAssignment_0 ) ) )
+            // InternalHenshin_text.g:6377:1: ( ( rule__Match__NameAssignment_0 ) )
             {
-            // InternalHenshin_text.g:6328:1: ( ( rule__Match__NameAssignment_0 ) )
-            // InternalHenshin_text.g:6329:2: ( rule__Match__NameAssignment_0 )
+            // InternalHenshin_text.g:6377:1: ( ( rule__Match__NameAssignment_0 ) )
+            // InternalHenshin_text.g:6378:2: ( rule__Match__NameAssignment_0 )
             {
              before(grammarAccess.getMatchAccess().getNameAssignment_0()); 
-            // InternalHenshin_text.g:6330:2: ( rule__Match__NameAssignment_0 )
-            // InternalHenshin_text.g:6330:3: rule__Match__NameAssignment_0
+            // InternalHenshin_text.g:6379:2: ( rule__Match__NameAssignment_0 )
+            // InternalHenshin_text.g:6379:3: rule__Match__NameAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__Match__NameAssignment_0();
@@ -19996,16 +20186,16 @@
 
 
     // $ANTLR start "rule__Match__Group__1"
-    // InternalHenshin_text.g:6338:1: rule__Match__Group__1 : rule__Match__Group__1__Impl rule__Match__Group__2 ;
+    // InternalHenshin_text.g:6387:1: rule__Match__Group__1 : rule__Match__Group__1__Impl rule__Match__Group__2 ;
     public final void rule__Match__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6342:1: ( rule__Match__Group__1__Impl rule__Match__Group__2 )
-            // InternalHenshin_text.g:6343:2: rule__Match__Group__1__Impl rule__Match__Group__2
+            // InternalHenshin_text.g:6391:1: ( rule__Match__Group__1__Impl rule__Match__Group__2 )
+            // InternalHenshin_text.g:6392:2: rule__Match__Group__1__Impl rule__Match__Group__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__Match__Group__1__Impl();
 
             state._fsp--;
@@ -20034,20 +20224,20 @@
 
 
     // $ANTLR start "rule__Match__Group__1__Impl"
-    // InternalHenshin_text.g:6350:1: rule__Match__Group__1__Impl : ( '=' ) ;
+    // InternalHenshin_text.g:6399:1: rule__Match__Group__1__Impl : ( '=' ) ;
     public final void rule__Match__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6354:1: ( ( '=' ) )
-            // InternalHenshin_text.g:6355:1: ( '=' )
+            // InternalHenshin_text.g:6403:1: ( ( '=' ) )
+            // InternalHenshin_text.g:6404:1: ( '=' )
             {
-            // InternalHenshin_text.g:6355:1: ( '=' )
-            // InternalHenshin_text.g:6356:2: '='
+            // InternalHenshin_text.g:6404:1: ( '=' )
+            // InternalHenshin_text.g:6405:2: '='
             {
              before(grammarAccess.getMatchAccess().getEqualsSignKeyword_1()); 
-            match(input,84,FOLLOW_2); 
+            match(input,88,FOLLOW_2); 
              after(grammarAccess.getMatchAccess().getEqualsSignKeyword_1()); 
 
             }
@@ -20071,14 +20261,14 @@
 
 
     // $ANTLR start "rule__Match__Group__2"
-    // InternalHenshin_text.g:6365:1: rule__Match__Group__2 : rule__Match__Group__2__Impl ;
+    // InternalHenshin_text.g:6414:1: rule__Match__Group__2 : rule__Match__Group__2__Impl ;
     public final void rule__Match__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6369:1: ( rule__Match__Group__2__Impl )
-            // InternalHenshin_text.g:6370:2: rule__Match__Group__2__Impl
+            // InternalHenshin_text.g:6418:1: ( rule__Match__Group__2__Impl )
+            // InternalHenshin_text.g:6419:2: rule__Match__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Match__Group__2__Impl();
@@ -20104,21 +20294,21 @@
 
 
     // $ANTLR start "rule__Match__Group__2__Impl"
-    // InternalHenshin_text.g:6376:1: rule__Match__Group__2__Impl : ( ( rule__Match__ValueAssignment_2 ) ) ;
+    // InternalHenshin_text.g:6425:1: rule__Match__Group__2__Impl : ( ( rule__Match__ValueAssignment_2 ) ) ;
     public final void rule__Match__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6380:1: ( ( ( rule__Match__ValueAssignment_2 ) ) )
-            // InternalHenshin_text.g:6381:1: ( ( rule__Match__ValueAssignment_2 ) )
+            // InternalHenshin_text.g:6429:1: ( ( ( rule__Match__ValueAssignment_2 ) ) )
+            // InternalHenshin_text.g:6430:1: ( ( rule__Match__ValueAssignment_2 ) )
             {
-            // InternalHenshin_text.g:6381:1: ( ( rule__Match__ValueAssignment_2 ) )
-            // InternalHenshin_text.g:6382:2: ( rule__Match__ValueAssignment_2 )
+            // InternalHenshin_text.g:6430:1: ( ( rule__Match__ValueAssignment_2 ) )
+            // InternalHenshin_text.g:6431:2: ( rule__Match__ValueAssignment_2 )
             {
              before(grammarAccess.getMatchAccess().getValueAssignment_2()); 
-            // InternalHenshin_text.g:6383:2: ( rule__Match__ValueAssignment_2 )
-            // InternalHenshin_text.g:6383:3: rule__Match__ValueAssignment_2
+            // InternalHenshin_text.g:6432:2: ( rule__Match__ValueAssignment_2 )
+            // InternalHenshin_text.g:6432:3: rule__Match__ValueAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__Match__ValueAssignment_2();
@@ -20151,14 +20341,14 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0__0"
-    // InternalHenshin_text.g:6392:1: rule__UnitElement__Group_0__0 : rule__UnitElement__Group_0__0__Impl rule__UnitElement__Group_0__1 ;
+    // InternalHenshin_text.g:6441:1: rule__UnitElement__Group_0__0 : rule__UnitElement__Group_0__0__Impl rule__UnitElement__Group_0__1 ;
     public final void rule__UnitElement__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6396:1: ( rule__UnitElement__Group_0__0__Impl rule__UnitElement__Group_0__1 )
-            // InternalHenshin_text.g:6397:2: rule__UnitElement__Group_0__0__Impl rule__UnitElement__Group_0__1
+            // InternalHenshin_text.g:6445:1: ( rule__UnitElement__Group_0__0__Impl rule__UnitElement__Group_0__1 )
+            // InternalHenshin_text.g:6446:2: rule__UnitElement__Group_0__0__Impl rule__UnitElement__Group_0__1
             {
             pushFollow(FOLLOW_7);
             rule__UnitElement__Group_0__0__Impl();
@@ -20189,21 +20379,21 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0__0__Impl"
-    // InternalHenshin_text.g:6404:1: rule__UnitElement__Group_0__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:6453:1: rule__UnitElement__Group_0__0__Impl : ( () ) ;
     public final void rule__UnitElement__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6408:1: ( ( () ) )
-            // InternalHenshin_text.g:6409:1: ( () )
+            // InternalHenshin_text.g:6457:1: ( ( () ) )
+            // InternalHenshin_text.g:6458:1: ( () )
             {
-            // InternalHenshin_text.g:6409:1: ( () )
-            // InternalHenshin_text.g:6410:2: ()
+            // InternalHenshin_text.g:6458:1: ( () )
+            // InternalHenshin_text.g:6459:2: ()
             {
              before(grammarAccess.getUnitElementAccess().getCallAction_0_0()); 
-            // InternalHenshin_text.g:6411:2: ()
-            // InternalHenshin_text.g:6411:3: 
+            // InternalHenshin_text.g:6460:2: ()
+            // InternalHenshin_text.g:6460:3: 
             {
             }
 
@@ -20226,14 +20416,14 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0__1"
-    // InternalHenshin_text.g:6419:1: rule__UnitElement__Group_0__1 : rule__UnitElement__Group_0__1__Impl rule__UnitElement__Group_0__2 ;
+    // InternalHenshin_text.g:6468:1: rule__UnitElement__Group_0__1 : rule__UnitElement__Group_0__1__Impl rule__UnitElement__Group_0__2 ;
     public final void rule__UnitElement__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6423:1: ( rule__UnitElement__Group_0__1__Impl rule__UnitElement__Group_0__2 )
-            // InternalHenshin_text.g:6424:2: rule__UnitElement__Group_0__1__Impl rule__UnitElement__Group_0__2
+            // InternalHenshin_text.g:6472:1: ( rule__UnitElement__Group_0__1__Impl rule__UnitElement__Group_0__2 )
+            // InternalHenshin_text.g:6473:2: rule__UnitElement__Group_0__1__Impl rule__UnitElement__Group_0__2
             {
             pushFollow(FOLLOW_10);
             rule__UnitElement__Group_0__1__Impl();
@@ -20264,21 +20454,21 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0__1__Impl"
-    // InternalHenshin_text.g:6431:1: rule__UnitElement__Group_0__1__Impl : ( ( rule__UnitElement__ElementCallAssignment_0_1 ) ) ;
+    // InternalHenshin_text.g:6480:1: rule__UnitElement__Group_0__1__Impl : ( ( rule__UnitElement__ElementCallAssignment_0_1 ) ) ;
     public final void rule__UnitElement__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6435:1: ( ( ( rule__UnitElement__ElementCallAssignment_0_1 ) ) )
-            // InternalHenshin_text.g:6436:1: ( ( rule__UnitElement__ElementCallAssignment_0_1 ) )
+            // InternalHenshin_text.g:6484:1: ( ( ( rule__UnitElement__ElementCallAssignment_0_1 ) ) )
+            // InternalHenshin_text.g:6485:1: ( ( rule__UnitElement__ElementCallAssignment_0_1 ) )
             {
-            // InternalHenshin_text.g:6436:1: ( ( rule__UnitElement__ElementCallAssignment_0_1 ) )
-            // InternalHenshin_text.g:6437:2: ( rule__UnitElement__ElementCallAssignment_0_1 )
+            // InternalHenshin_text.g:6485:1: ( ( rule__UnitElement__ElementCallAssignment_0_1 ) )
+            // InternalHenshin_text.g:6486:2: ( rule__UnitElement__ElementCallAssignment_0_1 )
             {
              before(grammarAccess.getUnitElementAccess().getElementCallAssignment_0_1()); 
-            // InternalHenshin_text.g:6438:2: ( rule__UnitElement__ElementCallAssignment_0_1 )
-            // InternalHenshin_text.g:6438:3: rule__UnitElement__ElementCallAssignment_0_1
+            // InternalHenshin_text.g:6487:2: ( rule__UnitElement__ElementCallAssignment_0_1 )
+            // InternalHenshin_text.g:6487:3: rule__UnitElement__ElementCallAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__UnitElement__ElementCallAssignment_0_1();
@@ -20311,16 +20501,16 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0__2"
-    // InternalHenshin_text.g:6446:1: rule__UnitElement__Group_0__2 : rule__UnitElement__Group_0__2__Impl rule__UnitElement__Group_0__3 ;
+    // InternalHenshin_text.g:6495:1: rule__UnitElement__Group_0__2 : rule__UnitElement__Group_0__2__Impl rule__UnitElement__Group_0__3 ;
     public final void rule__UnitElement__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6450:1: ( rule__UnitElement__Group_0__2__Impl rule__UnitElement__Group_0__3 )
-            // InternalHenshin_text.g:6451:2: rule__UnitElement__Group_0__2__Impl rule__UnitElement__Group_0__3
+            // InternalHenshin_text.g:6499:1: ( rule__UnitElement__Group_0__2__Impl rule__UnitElement__Group_0__3 )
+            // InternalHenshin_text.g:6500:2: rule__UnitElement__Group_0__2__Impl rule__UnitElement__Group_0__3
             {
-            pushFollow(FOLLOW_11);
+            pushFollow(FOLLOW_47);
             rule__UnitElement__Group_0__2__Impl();
 
             state._fsp--;
@@ -20349,20 +20539,20 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0__2__Impl"
-    // InternalHenshin_text.g:6458:1: rule__UnitElement__Group_0__2__Impl : ( '(' ) ;
+    // InternalHenshin_text.g:6507:1: rule__UnitElement__Group_0__2__Impl : ( '(' ) ;
     public final void rule__UnitElement__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6462:1: ( ( '(' ) )
-            // InternalHenshin_text.g:6463:1: ( '(' )
+            // InternalHenshin_text.g:6511:1: ( ( '(' ) )
+            // InternalHenshin_text.g:6512:1: ( '(' )
             {
-            // InternalHenshin_text.g:6463:1: ( '(' )
-            // InternalHenshin_text.g:6464:2: '('
+            // InternalHenshin_text.g:6512:1: ( '(' )
+            // InternalHenshin_text.g:6513:2: '('
             {
              before(grammarAccess.getUnitElementAccess().getLeftParenthesisKeyword_0_2()); 
-            match(input,66,FOLLOW_2); 
+            match(input,70,FOLLOW_2); 
              after(grammarAccess.getUnitElementAccess().getLeftParenthesisKeyword_0_2()); 
 
             }
@@ -20386,16 +20576,16 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0__3"
-    // InternalHenshin_text.g:6473:1: rule__UnitElement__Group_0__3 : rule__UnitElement__Group_0__3__Impl rule__UnitElement__Group_0__4 ;
+    // InternalHenshin_text.g:6522:1: rule__UnitElement__Group_0__3 : rule__UnitElement__Group_0__3__Impl rule__UnitElement__Group_0__4 ;
     public final void rule__UnitElement__Group_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6477:1: ( rule__UnitElement__Group_0__3__Impl rule__UnitElement__Group_0__4 )
-            // InternalHenshin_text.g:6478:2: rule__UnitElement__Group_0__3__Impl rule__UnitElement__Group_0__4
+            // InternalHenshin_text.g:6526:1: ( rule__UnitElement__Group_0__3__Impl rule__UnitElement__Group_0__4 )
+            // InternalHenshin_text.g:6527:2: rule__UnitElement__Group_0__3__Impl rule__UnitElement__Group_0__4
             {
-            pushFollow(FOLLOW_11);
+            pushFollow(FOLLOW_47);
             rule__UnitElement__Group_0__3__Impl();
 
             state._fsp--;
@@ -20424,29 +20614,29 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0__3__Impl"
-    // InternalHenshin_text.g:6485:1: rule__UnitElement__Group_0__3__Impl : ( ( rule__UnitElement__Group_0_3__0 )? ) ;
+    // InternalHenshin_text.g:6534:1: rule__UnitElement__Group_0__3__Impl : ( ( rule__UnitElement__Group_0_3__0 )? ) ;
     public final void rule__UnitElement__Group_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6489:1: ( ( ( rule__UnitElement__Group_0_3__0 )? ) )
-            // InternalHenshin_text.g:6490:1: ( ( rule__UnitElement__Group_0_3__0 )? )
+            // InternalHenshin_text.g:6538:1: ( ( ( rule__UnitElement__Group_0_3__0 )? ) )
+            // InternalHenshin_text.g:6539:1: ( ( rule__UnitElement__Group_0_3__0 )? )
             {
-            // InternalHenshin_text.g:6490:1: ( ( rule__UnitElement__Group_0_3__0 )? )
-            // InternalHenshin_text.g:6491:2: ( rule__UnitElement__Group_0_3__0 )?
+            // InternalHenshin_text.g:6539:1: ( ( rule__UnitElement__Group_0_3__0 )? )
+            // InternalHenshin_text.g:6540:2: ( rule__UnitElement__Group_0_3__0 )?
             {
              before(grammarAccess.getUnitElementAccess().getGroup_0_3()); 
-            // InternalHenshin_text.g:6492:2: ( rule__UnitElement__Group_0_3__0 )?
-            int alt50=2;
-            int LA50_0 = input.LA(1);
+            // InternalHenshin_text.g:6541:2: ( rule__UnitElement__Group_0_3__0 )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
 
-            if ( (LA50_0==RULE_ID) ) {
-                alt50=1;
+            if ( (LA51_0==RULE_ID) ) {
+                alt51=1;
             }
-            switch (alt50) {
+            switch (alt51) {
                 case 1 :
-                    // InternalHenshin_text.g:6492:3: rule__UnitElement__Group_0_3__0
+                    // InternalHenshin_text.g:6541:3: rule__UnitElement__Group_0_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__UnitElement__Group_0_3__0();
@@ -20482,14 +20672,14 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0__4"
-    // InternalHenshin_text.g:6500:1: rule__UnitElement__Group_0__4 : rule__UnitElement__Group_0__4__Impl ;
+    // InternalHenshin_text.g:6549:1: rule__UnitElement__Group_0__4 : rule__UnitElement__Group_0__4__Impl ;
     public final void rule__UnitElement__Group_0__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6504:1: ( rule__UnitElement__Group_0__4__Impl )
-            // InternalHenshin_text.g:6505:2: rule__UnitElement__Group_0__4__Impl
+            // InternalHenshin_text.g:6553:1: ( rule__UnitElement__Group_0__4__Impl )
+            // InternalHenshin_text.g:6554:2: rule__UnitElement__Group_0__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__UnitElement__Group_0__4__Impl();
@@ -20515,20 +20705,20 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0__4__Impl"
-    // InternalHenshin_text.g:6511:1: rule__UnitElement__Group_0__4__Impl : ( ')' ) ;
+    // InternalHenshin_text.g:6560:1: rule__UnitElement__Group_0__4__Impl : ( ')' ) ;
     public final void rule__UnitElement__Group_0__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6515:1: ( ( ')' ) )
-            // InternalHenshin_text.g:6516:1: ( ')' )
+            // InternalHenshin_text.g:6564:1: ( ( ')' ) )
+            // InternalHenshin_text.g:6565:1: ( ')' )
             {
-            // InternalHenshin_text.g:6516:1: ( ')' )
-            // InternalHenshin_text.g:6517:2: ')'
+            // InternalHenshin_text.g:6565:1: ( ')' )
+            // InternalHenshin_text.g:6566:2: ')'
             {
              before(grammarAccess.getUnitElementAccess().getRightParenthesisKeyword_0_4()); 
-            match(input,67,FOLLOW_2); 
+            match(input,71,FOLLOW_2); 
              after(grammarAccess.getUnitElementAccess().getRightParenthesisKeyword_0_4()); 
 
             }
@@ -20552,14 +20742,14 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0_3__0"
-    // InternalHenshin_text.g:6527:1: rule__UnitElement__Group_0_3__0 : rule__UnitElement__Group_0_3__0__Impl rule__UnitElement__Group_0_3__1 ;
+    // InternalHenshin_text.g:6576:1: rule__UnitElement__Group_0_3__0 : rule__UnitElement__Group_0_3__0__Impl rule__UnitElement__Group_0_3__1 ;
     public final void rule__UnitElement__Group_0_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6531:1: ( rule__UnitElement__Group_0_3__0__Impl rule__UnitElement__Group_0_3__1 )
-            // InternalHenshin_text.g:6532:2: rule__UnitElement__Group_0_3__0__Impl rule__UnitElement__Group_0_3__1
+            // InternalHenshin_text.g:6580:1: ( rule__UnitElement__Group_0_3__0__Impl rule__UnitElement__Group_0_3__1 )
+            // InternalHenshin_text.g:6581:2: rule__UnitElement__Group_0_3__0__Impl rule__UnitElement__Group_0_3__1
             {
             pushFollow(FOLLOW_16);
             rule__UnitElement__Group_0_3__0__Impl();
@@ -20590,21 +20780,21 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0_3__0__Impl"
-    // InternalHenshin_text.g:6539:1: rule__UnitElement__Group_0_3__0__Impl : ( ( rule__UnitElement__ParametersAssignment_0_3_0 ) ) ;
+    // InternalHenshin_text.g:6588:1: rule__UnitElement__Group_0_3__0__Impl : ( ( rule__UnitElement__ParametersAssignment_0_3_0 ) ) ;
     public final void rule__UnitElement__Group_0_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6543:1: ( ( ( rule__UnitElement__ParametersAssignment_0_3_0 ) ) )
-            // InternalHenshin_text.g:6544:1: ( ( rule__UnitElement__ParametersAssignment_0_3_0 ) )
+            // InternalHenshin_text.g:6592:1: ( ( ( rule__UnitElement__ParametersAssignment_0_3_0 ) ) )
+            // InternalHenshin_text.g:6593:1: ( ( rule__UnitElement__ParametersAssignment_0_3_0 ) )
             {
-            // InternalHenshin_text.g:6544:1: ( ( rule__UnitElement__ParametersAssignment_0_3_0 ) )
-            // InternalHenshin_text.g:6545:2: ( rule__UnitElement__ParametersAssignment_0_3_0 )
+            // InternalHenshin_text.g:6593:1: ( ( rule__UnitElement__ParametersAssignment_0_3_0 ) )
+            // InternalHenshin_text.g:6594:2: ( rule__UnitElement__ParametersAssignment_0_3_0 )
             {
              before(grammarAccess.getUnitElementAccess().getParametersAssignment_0_3_0()); 
-            // InternalHenshin_text.g:6546:2: ( rule__UnitElement__ParametersAssignment_0_3_0 )
-            // InternalHenshin_text.g:6546:3: rule__UnitElement__ParametersAssignment_0_3_0
+            // InternalHenshin_text.g:6595:2: ( rule__UnitElement__ParametersAssignment_0_3_0 )
+            // InternalHenshin_text.g:6595:3: rule__UnitElement__ParametersAssignment_0_3_0
             {
             pushFollow(FOLLOW_2);
             rule__UnitElement__ParametersAssignment_0_3_0();
@@ -20637,14 +20827,14 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0_3__1"
-    // InternalHenshin_text.g:6554:1: rule__UnitElement__Group_0_3__1 : rule__UnitElement__Group_0_3__1__Impl ;
+    // InternalHenshin_text.g:6603:1: rule__UnitElement__Group_0_3__1 : rule__UnitElement__Group_0_3__1__Impl ;
     public final void rule__UnitElement__Group_0_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6558:1: ( rule__UnitElement__Group_0_3__1__Impl )
-            // InternalHenshin_text.g:6559:2: rule__UnitElement__Group_0_3__1__Impl
+            // InternalHenshin_text.g:6607:1: ( rule__UnitElement__Group_0_3__1__Impl )
+            // InternalHenshin_text.g:6608:2: rule__UnitElement__Group_0_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__UnitElement__Group_0_3__1__Impl();
@@ -20670,33 +20860,33 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0_3__1__Impl"
-    // InternalHenshin_text.g:6565:1: rule__UnitElement__Group_0_3__1__Impl : ( ( rule__UnitElement__Group_0_3_1__0 )* ) ;
+    // InternalHenshin_text.g:6614:1: rule__UnitElement__Group_0_3__1__Impl : ( ( rule__UnitElement__Group_0_3_1__0 )* ) ;
     public final void rule__UnitElement__Group_0_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6569:1: ( ( ( rule__UnitElement__Group_0_3_1__0 )* ) )
-            // InternalHenshin_text.g:6570:1: ( ( rule__UnitElement__Group_0_3_1__0 )* )
+            // InternalHenshin_text.g:6618:1: ( ( ( rule__UnitElement__Group_0_3_1__0 )* ) )
+            // InternalHenshin_text.g:6619:1: ( ( rule__UnitElement__Group_0_3_1__0 )* )
             {
-            // InternalHenshin_text.g:6570:1: ( ( rule__UnitElement__Group_0_3_1__0 )* )
-            // InternalHenshin_text.g:6571:2: ( rule__UnitElement__Group_0_3_1__0 )*
+            // InternalHenshin_text.g:6619:1: ( ( rule__UnitElement__Group_0_3_1__0 )* )
+            // InternalHenshin_text.g:6620:2: ( rule__UnitElement__Group_0_3_1__0 )*
             {
              before(grammarAccess.getUnitElementAccess().getGroup_0_3_1()); 
-            // InternalHenshin_text.g:6572:2: ( rule__UnitElement__Group_0_3_1__0 )*
-            loop51:
+            // InternalHenshin_text.g:6621:2: ( rule__UnitElement__Group_0_3_1__0 )*
+            loop52:
             do {
-                int alt51=2;
-                int LA51_0 = input.LA(1);
+                int alt52=2;
+                int LA52_0 = input.LA(1);
 
-                if ( (LA51_0==70) ) {
-                    alt51=1;
+                if ( (LA52_0==74) ) {
+                    alt52=1;
                 }
 
 
-                switch (alt51) {
+                switch (alt52) {
             	case 1 :
-            	    // InternalHenshin_text.g:6572:3: rule__UnitElement__Group_0_3_1__0
+            	    // InternalHenshin_text.g:6621:3: rule__UnitElement__Group_0_3_1__0
             	    {
             	    pushFollow(FOLLOW_17);
             	    rule__UnitElement__Group_0_3_1__0();
@@ -20708,7 +20898,7 @@
             	    break;
 
             	default :
-            	    break loop51;
+            	    break loop52;
                 }
             } while (true);
 
@@ -20735,14 +20925,14 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0_3_1__0"
-    // InternalHenshin_text.g:6581:1: rule__UnitElement__Group_0_3_1__0 : rule__UnitElement__Group_0_3_1__0__Impl rule__UnitElement__Group_0_3_1__1 ;
+    // InternalHenshin_text.g:6630:1: rule__UnitElement__Group_0_3_1__0 : rule__UnitElement__Group_0_3_1__0__Impl rule__UnitElement__Group_0_3_1__1 ;
     public final void rule__UnitElement__Group_0_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6585:1: ( rule__UnitElement__Group_0_3_1__0__Impl rule__UnitElement__Group_0_3_1__1 )
-            // InternalHenshin_text.g:6586:2: rule__UnitElement__Group_0_3_1__0__Impl rule__UnitElement__Group_0_3_1__1
+            // InternalHenshin_text.g:6634:1: ( rule__UnitElement__Group_0_3_1__0__Impl rule__UnitElement__Group_0_3_1__1 )
+            // InternalHenshin_text.g:6635:2: rule__UnitElement__Group_0_3_1__0__Impl rule__UnitElement__Group_0_3_1__1
             {
             pushFollow(FOLLOW_7);
             rule__UnitElement__Group_0_3_1__0__Impl();
@@ -20773,20 +20963,20 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0_3_1__0__Impl"
-    // InternalHenshin_text.g:6593:1: rule__UnitElement__Group_0_3_1__0__Impl : ( ',' ) ;
+    // InternalHenshin_text.g:6642:1: rule__UnitElement__Group_0_3_1__0__Impl : ( ',' ) ;
     public final void rule__UnitElement__Group_0_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6597:1: ( ( ',' ) )
-            // InternalHenshin_text.g:6598:1: ( ',' )
+            // InternalHenshin_text.g:6646:1: ( ( ',' ) )
+            // InternalHenshin_text.g:6647:1: ( ',' )
             {
-            // InternalHenshin_text.g:6598:1: ( ',' )
-            // InternalHenshin_text.g:6599:2: ','
+            // InternalHenshin_text.g:6647:1: ( ',' )
+            // InternalHenshin_text.g:6648:2: ','
             {
              before(grammarAccess.getUnitElementAccess().getCommaKeyword_0_3_1_0()); 
-            match(input,70,FOLLOW_2); 
+            match(input,74,FOLLOW_2); 
              after(grammarAccess.getUnitElementAccess().getCommaKeyword_0_3_1_0()); 
 
             }
@@ -20810,14 +21000,14 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0_3_1__1"
-    // InternalHenshin_text.g:6608:1: rule__UnitElement__Group_0_3_1__1 : rule__UnitElement__Group_0_3_1__1__Impl ;
+    // InternalHenshin_text.g:6657:1: rule__UnitElement__Group_0_3_1__1 : rule__UnitElement__Group_0_3_1__1__Impl ;
     public final void rule__UnitElement__Group_0_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6612:1: ( rule__UnitElement__Group_0_3_1__1__Impl )
-            // InternalHenshin_text.g:6613:2: rule__UnitElement__Group_0_3_1__1__Impl
+            // InternalHenshin_text.g:6661:1: ( rule__UnitElement__Group_0_3_1__1__Impl )
+            // InternalHenshin_text.g:6662:2: rule__UnitElement__Group_0_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__UnitElement__Group_0_3_1__1__Impl();
@@ -20843,21 +21033,21 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_0_3_1__1__Impl"
-    // InternalHenshin_text.g:6619:1: rule__UnitElement__Group_0_3_1__1__Impl : ( ( rule__UnitElement__ParametersAssignment_0_3_1_1 ) ) ;
+    // InternalHenshin_text.g:6668:1: rule__UnitElement__Group_0_3_1__1__Impl : ( ( rule__UnitElement__ParametersAssignment_0_3_1_1 ) ) ;
     public final void rule__UnitElement__Group_0_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6623:1: ( ( ( rule__UnitElement__ParametersAssignment_0_3_1_1 ) ) )
-            // InternalHenshin_text.g:6624:1: ( ( rule__UnitElement__ParametersAssignment_0_3_1_1 ) )
+            // InternalHenshin_text.g:6672:1: ( ( ( rule__UnitElement__ParametersAssignment_0_3_1_1 ) ) )
+            // InternalHenshin_text.g:6673:1: ( ( rule__UnitElement__ParametersAssignment_0_3_1_1 ) )
             {
-            // InternalHenshin_text.g:6624:1: ( ( rule__UnitElement__ParametersAssignment_0_3_1_1 ) )
-            // InternalHenshin_text.g:6625:2: ( rule__UnitElement__ParametersAssignment_0_3_1_1 )
+            // InternalHenshin_text.g:6673:1: ( ( rule__UnitElement__ParametersAssignment_0_3_1_1 ) )
+            // InternalHenshin_text.g:6674:2: ( rule__UnitElement__ParametersAssignment_0_3_1_1 )
             {
              before(grammarAccess.getUnitElementAccess().getParametersAssignment_0_3_1_1()); 
-            // InternalHenshin_text.g:6626:2: ( rule__UnitElement__ParametersAssignment_0_3_1_1 )
-            // InternalHenshin_text.g:6626:3: rule__UnitElement__ParametersAssignment_0_3_1_1
+            // InternalHenshin_text.g:6675:2: ( rule__UnitElement__ParametersAssignment_0_3_1_1 )
+            // InternalHenshin_text.g:6675:3: rule__UnitElement__ParametersAssignment_0_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__UnitElement__ParametersAssignment_0_3_1_1();
@@ -20890,16 +21080,16 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_1__0"
-    // InternalHenshin_text.g:6635:1: rule__UnitElement__Group_1__0 : rule__UnitElement__Group_1__0__Impl rule__UnitElement__Group_1__1 ;
+    // InternalHenshin_text.g:6684:1: rule__UnitElement__Group_1__0 : rule__UnitElement__Group_1__0__Impl rule__UnitElement__Group_1__1 ;
     public final void rule__UnitElement__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6639:1: ( rule__UnitElement__Group_1__0__Impl rule__UnitElement__Group_1__1 )
-            // InternalHenshin_text.g:6640:2: rule__UnitElement__Group_1__0__Impl rule__UnitElement__Group_1__1
+            // InternalHenshin_text.g:6688:1: ( rule__UnitElement__Group_1__0__Impl rule__UnitElement__Group_1__1 )
+            // InternalHenshin_text.g:6689:2: rule__UnitElement__Group_1__0__Impl rule__UnitElement__Group_1__1
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__UnitElement__Group_1__0__Impl();
 
             state._fsp--;
@@ -20928,20 +21118,20 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_1__0__Impl"
-    // InternalHenshin_text.g:6647:1: rule__UnitElement__Group_1__0__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:6696:1: rule__UnitElement__Group_1__0__Impl : ( '{' ) ;
     public final void rule__UnitElement__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6651:1: ( ( '{' ) )
-            // InternalHenshin_text.g:6652:1: ( '{' )
+            // InternalHenshin_text.g:6700:1: ( ( '{' ) )
+            // InternalHenshin_text.g:6701:1: ( '{' )
             {
-            // InternalHenshin_text.g:6652:1: ( '{' )
-            // InternalHenshin_text.g:6653:2: '{'
+            // InternalHenshin_text.g:6701:1: ( '{' )
+            // InternalHenshin_text.g:6702:2: '{'
             {
              before(grammarAccess.getUnitElementAccess().getLeftCurlyBracketKeyword_1_0()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getUnitElementAccess().getLeftCurlyBracketKeyword_1_0()); 
 
             }
@@ -20965,14 +21155,14 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_1__1"
-    // InternalHenshin_text.g:6662:1: rule__UnitElement__Group_1__1 : rule__UnitElement__Group_1__1__Impl rule__UnitElement__Group_1__2 ;
+    // InternalHenshin_text.g:6711:1: rule__UnitElement__Group_1__1 : rule__UnitElement__Group_1__1__Impl rule__UnitElement__Group_1__2 ;
     public final void rule__UnitElement__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6666:1: ( rule__UnitElement__Group_1__1__Impl rule__UnitElement__Group_1__2 )
-            // InternalHenshin_text.g:6667:2: rule__UnitElement__Group_1__1__Impl rule__UnitElement__Group_1__2
+            // InternalHenshin_text.g:6715:1: ( rule__UnitElement__Group_1__1__Impl rule__UnitElement__Group_1__2 )
+            // InternalHenshin_text.g:6716:2: rule__UnitElement__Group_1__1__Impl rule__UnitElement__Group_1__2
             {
             pushFollow(FOLLOW_14);
             rule__UnitElement__Group_1__1__Impl();
@@ -21003,24 +21193,24 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_1__1__Impl"
-    // InternalHenshin_text.g:6674:1: rule__UnitElement__Group_1__1__Impl : ( ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) ) ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* ) ) ;
+    // InternalHenshin_text.g:6723:1: rule__UnitElement__Group_1__1__Impl : ( ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) ) ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* ) ) ;
     public final void rule__UnitElement__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6678:1: ( ( ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) ) ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* ) ) )
-            // InternalHenshin_text.g:6679:1: ( ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) ) ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* ) )
+            // InternalHenshin_text.g:6727:1: ( ( ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) ) ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* ) ) )
+            // InternalHenshin_text.g:6728:1: ( ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) ) ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* ) )
             {
-            // InternalHenshin_text.g:6679:1: ( ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) ) ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* ) )
-            // InternalHenshin_text.g:6680:2: ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) ) ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* )
+            // InternalHenshin_text.g:6728:1: ( ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) ) ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* ) )
+            // InternalHenshin_text.g:6729:2: ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) ) ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* )
             {
-            // InternalHenshin_text.g:6680:2: ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) )
-            // InternalHenshin_text.g:6681:3: ( rule__UnitElement__SubSequenceAssignment_1_1 )
+            // InternalHenshin_text.g:6729:2: ( ( rule__UnitElement__SubSequenceAssignment_1_1 ) )
+            // InternalHenshin_text.g:6730:3: ( rule__UnitElement__SubSequenceAssignment_1_1 )
             {
              before(grammarAccess.getUnitElementAccess().getSubSequenceAssignment_1_1()); 
-            // InternalHenshin_text.g:6682:3: ( rule__UnitElement__SubSequenceAssignment_1_1 )
-            // InternalHenshin_text.g:6682:4: rule__UnitElement__SubSequenceAssignment_1_1
+            // InternalHenshin_text.g:6731:3: ( rule__UnitElement__SubSequenceAssignment_1_1 )
+            // InternalHenshin_text.g:6731:4: rule__UnitElement__SubSequenceAssignment_1_1
             {
             pushFollow(FOLLOW_3);
             rule__UnitElement__SubSequenceAssignment_1_1();
@@ -21034,24 +21224,24 @@
 
             }
 
-            // InternalHenshin_text.g:6685:2: ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* )
-            // InternalHenshin_text.g:6686:3: ( rule__UnitElement__SubSequenceAssignment_1_1 )*
+            // InternalHenshin_text.g:6734:2: ( ( rule__UnitElement__SubSequenceAssignment_1_1 )* )
+            // InternalHenshin_text.g:6735:3: ( rule__UnitElement__SubSequenceAssignment_1_1 )*
             {
              before(grammarAccess.getUnitElementAccess().getSubSequenceAssignment_1_1()); 
-            // InternalHenshin_text.g:6687:3: ( rule__UnitElement__SubSequenceAssignment_1_1 )*
-            loop52:
+            // InternalHenshin_text.g:6736:3: ( rule__UnitElement__SubSequenceAssignment_1_1 )*
+            loop53:
             do {
-                int alt52=2;
-                int LA52_0 = input.LA(1);
+                int alt53=2;
+                int LA53_0 = input.LA(1);
 
-                if ( (LA52_0==RULE_ID||LA52_0==68||(LA52_0>=91 && LA52_0<=94)||(LA52_0>=97 && LA52_0<=99)) ) {
-                    alt52=1;
+                if ( (LA53_0==RULE_ID||LA53_0==72||(LA53_0>=95 && LA53_0<=98)||(LA53_0>=101 && LA53_0<=103)) ) {
+                    alt53=1;
                 }
 
 
-                switch (alt52) {
+                switch (alt53) {
             	case 1 :
-            	    // InternalHenshin_text.g:6687:4: rule__UnitElement__SubSequenceAssignment_1_1
+            	    // InternalHenshin_text.g:6736:4: rule__UnitElement__SubSequenceAssignment_1_1
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__UnitElement__SubSequenceAssignment_1_1();
@@ -21063,7 +21253,7 @@
             	    break;
 
             	default :
-            	    break loop52;
+            	    break loop53;
                 }
             } while (true);
 
@@ -21093,14 +21283,14 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_1__2"
-    // InternalHenshin_text.g:6696:1: rule__UnitElement__Group_1__2 : rule__UnitElement__Group_1__2__Impl ;
+    // InternalHenshin_text.g:6745:1: rule__UnitElement__Group_1__2 : rule__UnitElement__Group_1__2__Impl ;
     public final void rule__UnitElement__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6700:1: ( rule__UnitElement__Group_1__2__Impl )
-            // InternalHenshin_text.g:6701:2: rule__UnitElement__Group_1__2__Impl
+            // InternalHenshin_text.g:6749:1: ( rule__UnitElement__Group_1__2__Impl )
+            // InternalHenshin_text.g:6750:2: rule__UnitElement__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__UnitElement__Group_1__2__Impl();
@@ -21126,20 +21316,20 @@
 
 
     // $ANTLR start "rule__UnitElement__Group_1__2__Impl"
-    // InternalHenshin_text.g:6707:1: rule__UnitElement__Group_1__2__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:6756:1: rule__UnitElement__Group_1__2__Impl : ( '}' ) ;
     public final void rule__UnitElement__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6711:1: ( ( '}' ) )
-            // InternalHenshin_text.g:6712:1: ( '}' )
+            // InternalHenshin_text.g:6760:1: ( ( '}' ) )
+            // InternalHenshin_text.g:6761:1: ( '}' )
             {
-            // InternalHenshin_text.g:6712:1: ( '}' )
-            // InternalHenshin_text.g:6713:2: '}'
+            // InternalHenshin_text.g:6761:1: ( '}' )
+            // InternalHenshin_text.g:6762:2: '}'
             {
              before(grammarAccess.getUnitElementAccess().getRightCurlyBracketKeyword_1_2()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getUnitElementAccess().getRightCurlyBracketKeyword_1_2()); 
 
             }
@@ -21163,16 +21353,16 @@
 
 
     // $ANTLR start "rule__Strict__Group__0"
-    // InternalHenshin_text.g:6723:1: rule__Strict__Group__0 : rule__Strict__Group__0__Impl rule__Strict__Group__1 ;
+    // InternalHenshin_text.g:6772:1: rule__Strict__Group__0 : rule__Strict__Group__0__Impl rule__Strict__Group__1 ;
     public final void rule__Strict__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6727:1: ( rule__Strict__Group__0__Impl rule__Strict__Group__1 )
-            // InternalHenshin_text.g:6728:2: rule__Strict__Group__0__Impl rule__Strict__Group__1
+            // InternalHenshin_text.g:6776:1: ( rule__Strict__Group__0__Impl rule__Strict__Group__1 )
+            // InternalHenshin_text.g:6777:2: rule__Strict__Group__0__Impl rule__Strict__Group__1
             {
-            pushFollow(FOLLOW_19);
+            pushFollow(FOLLOW_20);
             rule__Strict__Group__0__Impl();
 
             state._fsp--;
@@ -21201,20 +21391,20 @@
 
 
     // $ANTLR start "rule__Strict__Group__0__Impl"
-    // InternalHenshin_text.g:6735:1: rule__Strict__Group__0__Impl : ( 'strict' ) ;
+    // InternalHenshin_text.g:6784:1: rule__Strict__Group__0__Impl : ( 'strict' ) ;
     public final void rule__Strict__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6739:1: ( ( 'strict' ) )
-            // InternalHenshin_text.g:6740:1: ( 'strict' )
+            // InternalHenshin_text.g:6788:1: ( ( 'strict' ) )
+            // InternalHenshin_text.g:6789:1: ( 'strict' )
             {
-            // InternalHenshin_text.g:6740:1: ( 'strict' )
-            // InternalHenshin_text.g:6741:2: 'strict'
+            // InternalHenshin_text.g:6789:1: ( 'strict' )
+            // InternalHenshin_text.g:6790:2: 'strict'
             {
              before(grammarAccess.getStrictAccess().getStrictKeyword_0()); 
-            match(input,91,FOLLOW_2); 
+            match(input,95,FOLLOW_2); 
              after(grammarAccess.getStrictAccess().getStrictKeyword_0()); 
 
             }
@@ -21238,14 +21428,14 @@
 
 
     // $ANTLR start "rule__Strict__Group__1"
-    // InternalHenshin_text.g:6750:1: rule__Strict__Group__1 : rule__Strict__Group__1__Impl ;
+    // InternalHenshin_text.g:6799:1: rule__Strict__Group__1 : rule__Strict__Group__1__Impl ;
     public final void rule__Strict__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6754:1: ( rule__Strict__Group__1__Impl )
-            // InternalHenshin_text.g:6755:2: rule__Strict__Group__1__Impl
+            // InternalHenshin_text.g:6803:1: ( rule__Strict__Group__1__Impl )
+            // InternalHenshin_text.g:6804:2: rule__Strict__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Strict__Group__1__Impl();
@@ -21271,21 +21461,21 @@
 
 
     // $ANTLR start "rule__Strict__Group__1__Impl"
-    // InternalHenshin_text.g:6761:1: rule__Strict__Group__1__Impl : ( ( rule__Strict__StrictAssignment_1 ) ) ;
+    // InternalHenshin_text.g:6810:1: rule__Strict__Group__1__Impl : ( ( rule__Strict__StrictAssignment_1 ) ) ;
     public final void rule__Strict__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6765:1: ( ( ( rule__Strict__StrictAssignment_1 ) ) )
-            // InternalHenshin_text.g:6766:1: ( ( rule__Strict__StrictAssignment_1 ) )
+            // InternalHenshin_text.g:6814:1: ( ( ( rule__Strict__StrictAssignment_1 ) ) )
+            // InternalHenshin_text.g:6815:1: ( ( rule__Strict__StrictAssignment_1 ) )
             {
-            // InternalHenshin_text.g:6766:1: ( ( rule__Strict__StrictAssignment_1 ) )
-            // InternalHenshin_text.g:6767:2: ( rule__Strict__StrictAssignment_1 )
+            // InternalHenshin_text.g:6815:1: ( ( rule__Strict__StrictAssignment_1 ) )
+            // InternalHenshin_text.g:6816:2: ( rule__Strict__StrictAssignment_1 )
             {
              before(grammarAccess.getStrictAccess().getStrictAssignment_1()); 
-            // InternalHenshin_text.g:6768:2: ( rule__Strict__StrictAssignment_1 )
-            // InternalHenshin_text.g:6768:3: rule__Strict__StrictAssignment_1
+            // InternalHenshin_text.g:6817:2: ( rule__Strict__StrictAssignment_1 )
+            // InternalHenshin_text.g:6817:3: rule__Strict__StrictAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__Strict__StrictAssignment_1();
@@ -21318,16 +21508,16 @@
 
 
     // $ANTLR start "rule__Rollback__Group__0"
-    // InternalHenshin_text.g:6777:1: rule__Rollback__Group__0 : rule__Rollback__Group__0__Impl rule__Rollback__Group__1 ;
+    // InternalHenshin_text.g:6826:1: rule__Rollback__Group__0 : rule__Rollback__Group__0__Impl rule__Rollback__Group__1 ;
     public final void rule__Rollback__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6781:1: ( rule__Rollback__Group__0__Impl rule__Rollback__Group__1 )
-            // InternalHenshin_text.g:6782:2: rule__Rollback__Group__0__Impl rule__Rollback__Group__1
+            // InternalHenshin_text.g:6830:1: ( rule__Rollback__Group__0__Impl rule__Rollback__Group__1 )
+            // InternalHenshin_text.g:6831:2: rule__Rollback__Group__0__Impl rule__Rollback__Group__1
             {
-            pushFollow(FOLLOW_19);
+            pushFollow(FOLLOW_20);
             rule__Rollback__Group__0__Impl();
 
             state._fsp--;
@@ -21356,20 +21546,20 @@
 
 
     // $ANTLR start "rule__Rollback__Group__0__Impl"
-    // InternalHenshin_text.g:6789:1: rule__Rollback__Group__0__Impl : ( 'rollback' ) ;
+    // InternalHenshin_text.g:6838:1: rule__Rollback__Group__0__Impl : ( 'rollback' ) ;
     public final void rule__Rollback__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6793:1: ( ( 'rollback' ) )
-            // InternalHenshin_text.g:6794:1: ( 'rollback' )
+            // InternalHenshin_text.g:6842:1: ( ( 'rollback' ) )
+            // InternalHenshin_text.g:6843:1: ( 'rollback' )
             {
-            // InternalHenshin_text.g:6794:1: ( 'rollback' )
-            // InternalHenshin_text.g:6795:2: 'rollback'
+            // InternalHenshin_text.g:6843:1: ( 'rollback' )
+            // InternalHenshin_text.g:6844:2: 'rollback'
             {
              before(grammarAccess.getRollbackAccess().getRollbackKeyword_0()); 
-            match(input,92,FOLLOW_2); 
+            match(input,96,FOLLOW_2); 
              after(grammarAccess.getRollbackAccess().getRollbackKeyword_0()); 
 
             }
@@ -21393,14 +21583,14 @@
 
 
     // $ANTLR start "rule__Rollback__Group__1"
-    // InternalHenshin_text.g:6804:1: rule__Rollback__Group__1 : rule__Rollback__Group__1__Impl ;
+    // InternalHenshin_text.g:6853:1: rule__Rollback__Group__1 : rule__Rollback__Group__1__Impl ;
     public final void rule__Rollback__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6808:1: ( rule__Rollback__Group__1__Impl )
-            // InternalHenshin_text.g:6809:2: rule__Rollback__Group__1__Impl
+            // InternalHenshin_text.g:6857:1: ( rule__Rollback__Group__1__Impl )
+            // InternalHenshin_text.g:6858:2: rule__Rollback__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Rollback__Group__1__Impl();
@@ -21426,21 +21616,21 @@
 
 
     // $ANTLR start "rule__Rollback__Group__1__Impl"
-    // InternalHenshin_text.g:6815:1: rule__Rollback__Group__1__Impl : ( ( rule__Rollback__RollbackAssignment_1 ) ) ;
+    // InternalHenshin_text.g:6864:1: rule__Rollback__Group__1__Impl : ( ( rule__Rollback__RollbackAssignment_1 ) ) ;
     public final void rule__Rollback__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6819:1: ( ( ( rule__Rollback__RollbackAssignment_1 ) ) )
-            // InternalHenshin_text.g:6820:1: ( ( rule__Rollback__RollbackAssignment_1 ) )
+            // InternalHenshin_text.g:6868:1: ( ( ( rule__Rollback__RollbackAssignment_1 ) ) )
+            // InternalHenshin_text.g:6869:1: ( ( rule__Rollback__RollbackAssignment_1 ) )
             {
-            // InternalHenshin_text.g:6820:1: ( ( rule__Rollback__RollbackAssignment_1 ) )
-            // InternalHenshin_text.g:6821:2: ( rule__Rollback__RollbackAssignment_1 )
+            // InternalHenshin_text.g:6869:1: ( ( rule__Rollback__RollbackAssignment_1 ) )
+            // InternalHenshin_text.g:6870:2: ( rule__Rollback__RollbackAssignment_1 )
             {
              before(grammarAccess.getRollbackAccess().getRollbackAssignment_1()); 
-            // InternalHenshin_text.g:6822:2: ( rule__Rollback__RollbackAssignment_1 )
-            // InternalHenshin_text.g:6822:3: rule__Rollback__RollbackAssignment_1
+            // InternalHenshin_text.g:6871:2: ( rule__Rollback__RollbackAssignment_1 )
+            // InternalHenshin_text.g:6871:3: rule__Rollback__RollbackAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__Rollback__RollbackAssignment_1();
@@ -21473,16 +21663,16 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group__0"
-    // InternalHenshin_text.g:6831:1: rule__IndependentUnit__Group__0 : rule__IndependentUnit__Group__0__Impl rule__IndependentUnit__Group__1 ;
+    // InternalHenshin_text.g:6880:1: rule__IndependentUnit__Group__0 : rule__IndependentUnit__Group__0__Impl rule__IndependentUnit__Group__1 ;
     public final void rule__IndependentUnit__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6835:1: ( rule__IndependentUnit__Group__0__Impl rule__IndependentUnit__Group__1 )
-            // InternalHenshin_text.g:6836:2: rule__IndependentUnit__Group__0__Impl rule__IndependentUnit__Group__1
+            // InternalHenshin_text.g:6884:1: ( rule__IndependentUnit__Group__0__Impl rule__IndependentUnit__Group__1 )
+            // InternalHenshin_text.g:6885:2: rule__IndependentUnit__Group__0__Impl rule__IndependentUnit__Group__1
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_21);
             rule__IndependentUnit__Group__0__Impl();
 
             state._fsp--;
@@ -21511,20 +21701,20 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group__0__Impl"
-    // InternalHenshin_text.g:6843:1: rule__IndependentUnit__Group__0__Impl : ( 'independent' ) ;
+    // InternalHenshin_text.g:6892:1: rule__IndependentUnit__Group__0__Impl : ( 'independent' ) ;
     public final void rule__IndependentUnit__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6847:1: ( ( 'independent' ) )
-            // InternalHenshin_text.g:6848:1: ( 'independent' )
+            // InternalHenshin_text.g:6896:1: ( ( 'independent' ) )
+            // InternalHenshin_text.g:6897:1: ( 'independent' )
             {
-            // InternalHenshin_text.g:6848:1: ( 'independent' )
-            // InternalHenshin_text.g:6849:2: 'independent'
+            // InternalHenshin_text.g:6897:1: ( 'independent' )
+            // InternalHenshin_text.g:6898:2: 'independent'
             {
              before(grammarAccess.getIndependentUnitAccess().getIndependentKeyword_0()); 
-            match(input,93,FOLLOW_2); 
+            match(input,97,FOLLOW_2); 
              after(grammarAccess.getIndependentUnitAccess().getIndependentKeyword_0()); 
 
             }
@@ -21548,16 +21738,16 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group__1"
-    // InternalHenshin_text.g:6858:1: rule__IndependentUnit__Group__1 : rule__IndependentUnit__Group__1__Impl rule__IndependentUnit__Group__2 ;
+    // InternalHenshin_text.g:6907:1: rule__IndependentUnit__Group__1 : rule__IndependentUnit__Group__1__Impl rule__IndependentUnit__Group__2 ;
     public final void rule__IndependentUnit__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6862:1: ( rule__IndependentUnit__Group__1__Impl rule__IndependentUnit__Group__2 )
-            // InternalHenshin_text.g:6863:2: rule__IndependentUnit__Group__1__Impl rule__IndependentUnit__Group__2
+            // InternalHenshin_text.g:6911:1: ( rule__IndependentUnit__Group__1__Impl rule__IndependentUnit__Group__2 )
+            // InternalHenshin_text.g:6912:2: rule__IndependentUnit__Group__1__Impl rule__IndependentUnit__Group__2
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__IndependentUnit__Group__1__Impl();
 
             state._fsp--;
@@ -21586,20 +21776,20 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group__1__Impl"
-    // InternalHenshin_text.g:6870:1: rule__IndependentUnit__Group__1__Impl : ( '[' ) ;
+    // InternalHenshin_text.g:6919:1: rule__IndependentUnit__Group__1__Impl : ( '[' ) ;
     public final void rule__IndependentUnit__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6874:1: ( ( '[' ) )
-            // InternalHenshin_text.g:6875:1: ( '[' )
+            // InternalHenshin_text.g:6923:1: ( ( '[' ) )
+            // InternalHenshin_text.g:6924:1: ( '[' )
             {
-            // InternalHenshin_text.g:6875:1: ( '[' )
-            // InternalHenshin_text.g:6876:2: '['
+            // InternalHenshin_text.g:6924:1: ( '[' )
+            // InternalHenshin_text.g:6925:2: '['
             {
              before(grammarAccess.getIndependentUnitAccess().getLeftSquareBracketKeyword_1()); 
-            match(input,76,FOLLOW_2); 
+            match(input,80,FOLLOW_2); 
              after(grammarAccess.getIndependentUnitAccess().getLeftSquareBracketKeyword_1()); 
 
             }
@@ -21623,16 +21813,16 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group__2"
-    // InternalHenshin_text.g:6885:1: rule__IndependentUnit__Group__2 : rule__IndependentUnit__Group__2__Impl rule__IndependentUnit__Group__3 ;
+    // InternalHenshin_text.g:6934:1: rule__IndependentUnit__Group__2 : rule__IndependentUnit__Group__2__Impl rule__IndependentUnit__Group__3 ;
     public final void rule__IndependentUnit__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6889:1: ( rule__IndependentUnit__Group__2__Impl rule__IndependentUnit__Group__3 )
-            // InternalHenshin_text.g:6890:2: rule__IndependentUnit__Group__2__Impl rule__IndependentUnit__Group__3
+            // InternalHenshin_text.g:6938:1: ( rule__IndependentUnit__Group__2__Impl rule__IndependentUnit__Group__3 )
+            // InternalHenshin_text.g:6939:2: rule__IndependentUnit__Group__2__Impl rule__IndependentUnit__Group__3
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_23);
             rule__IndependentUnit__Group__2__Impl();
 
             state._fsp--;
@@ -21661,21 +21851,21 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group__2__Impl"
-    // InternalHenshin_text.g:6897:1: rule__IndependentUnit__Group__2__Impl : ( ( rule__IndependentUnit__ListOfListsAssignment_2 ) ) ;
+    // InternalHenshin_text.g:6946:1: rule__IndependentUnit__Group__2__Impl : ( ( rule__IndependentUnit__ListOfListsAssignment_2 ) ) ;
     public final void rule__IndependentUnit__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6901:1: ( ( ( rule__IndependentUnit__ListOfListsAssignment_2 ) ) )
-            // InternalHenshin_text.g:6902:1: ( ( rule__IndependentUnit__ListOfListsAssignment_2 ) )
+            // InternalHenshin_text.g:6950:1: ( ( ( rule__IndependentUnit__ListOfListsAssignment_2 ) ) )
+            // InternalHenshin_text.g:6951:1: ( ( rule__IndependentUnit__ListOfListsAssignment_2 ) )
             {
-            // InternalHenshin_text.g:6902:1: ( ( rule__IndependentUnit__ListOfListsAssignment_2 ) )
-            // InternalHenshin_text.g:6903:2: ( rule__IndependentUnit__ListOfListsAssignment_2 )
+            // InternalHenshin_text.g:6951:1: ( ( rule__IndependentUnit__ListOfListsAssignment_2 ) )
+            // InternalHenshin_text.g:6952:2: ( rule__IndependentUnit__ListOfListsAssignment_2 )
             {
              before(grammarAccess.getIndependentUnitAccess().getListOfListsAssignment_2()); 
-            // InternalHenshin_text.g:6904:2: ( rule__IndependentUnit__ListOfListsAssignment_2 )
-            // InternalHenshin_text.g:6904:3: rule__IndependentUnit__ListOfListsAssignment_2
+            // InternalHenshin_text.g:6953:2: ( rule__IndependentUnit__ListOfListsAssignment_2 )
+            // InternalHenshin_text.g:6953:3: rule__IndependentUnit__ListOfListsAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__IndependentUnit__ListOfListsAssignment_2();
@@ -21708,16 +21898,16 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group__3"
-    // InternalHenshin_text.g:6912:1: rule__IndependentUnit__Group__3 : rule__IndependentUnit__Group__3__Impl rule__IndependentUnit__Group__4 ;
+    // InternalHenshin_text.g:6961:1: rule__IndependentUnit__Group__3 : rule__IndependentUnit__Group__3__Impl rule__IndependentUnit__Group__4 ;
     public final void rule__IndependentUnit__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6916:1: ( rule__IndependentUnit__Group__3__Impl rule__IndependentUnit__Group__4 )
-            // InternalHenshin_text.g:6917:2: rule__IndependentUnit__Group__3__Impl rule__IndependentUnit__Group__4
+            // InternalHenshin_text.g:6965:1: ( rule__IndependentUnit__Group__3__Impl rule__IndependentUnit__Group__4 )
+            // InternalHenshin_text.g:6966:2: rule__IndependentUnit__Group__3__Impl rule__IndependentUnit__Group__4
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_23);
             rule__IndependentUnit__Group__3__Impl();
 
             state._fsp--;
@@ -21746,33 +21936,33 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group__3__Impl"
-    // InternalHenshin_text.g:6924:1: rule__IndependentUnit__Group__3__Impl : ( ( rule__IndependentUnit__Group_3__0 )* ) ;
+    // InternalHenshin_text.g:6973:1: rule__IndependentUnit__Group__3__Impl : ( ( rule__IndependentUnit__Group_3__0 )* ) ;
     public final void rule__IndependentUnit__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6928:1: ( ( ( rule__IndependentUnit__Group_3__0 )* ) )
-            // InternalHenshin_text.g:6929:1: ( ( rule__IndependentUnit__Group_3__0 )* )
+            // InternalHenshin_text.g:6977:1: ( ( ( rule__IndependentUnit__Group_3__0 )* ) )
+            // InternalHenshin_text.g:6978:1: ( ( rule__IndependentUnit__Group_3__0 )* )
             {
-            // InternalHenshin_text.g:6929:1: ( ( rule__IndependentUnit__Group_3__0 )* )
-            // InternalHenshin_text.g:6930:2: ( rule__IndependentUnit__Group_3__0 )*
+            // InternalHenshin_text.g:6978:1: ( ( rule__IndependentUnit__Group_3__0 )* )
+            // InternalHenshin_text.g:6979:2: ( rule__IndependentUnit__Group_3__0 )*
             {
              before(grammarAccess.getIndependentUnitAccess().getGroup_3()); 
-            // InternalHenshin_text.g:6931:2: ( rule__IndependentUnit__Group_3__0 )*
-            loop53:
+            // InternalHenshin_text.g:6980:2: ( rule__IndependentUnit__Group_3__0 )*
+            loop54:
             do {
-                int alt53=2;
-                int LA53_0 = input.LA(1);
+                int alt54=2;
+                int LA54_0 = input.LA(1);
 
-                if ( (LA53_0==70) ) {
-                    alt53=1;
+                if ( (LA54_0==74) ) {
+                    alt54=1;
                 }
 
 
-                switch (alt53) {
+                switch (alt54) {
             	case 1 :
-            	    // InternalHenshin_text.g:6931:3: rule__IndependentUnit__Group_3__0
+            	    // InternalHenshin_text.g:6980:3: rule__IndependentUnit__Group_3__0
             	    {
             	    pushFollow(FOLLOW_17);
             	    rule__IndependentUnit__Group_3__0();
@@ -21784,7 +21974,7 @@
             	    break;
 
             	default :
-            	    break loop53;
+            	    break loop54;
                 }
             } while (true);
 
@@ -21811,14 +22001,14 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group__4"
-    // InternalHenshin_text.g:6939:1: rule__IndependentUnit__Group__4 : rule__IndependentUnit__Group__4__Impl ;
+    // InternalHenshin_text.g:6988:1: rule__IndependentUnit__Group__4 : rule__IndependentUnit__Group__4__Impl ;
     public final void rule__IndependentUnit__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6943:1: ( rule__IndependentUnit__Group__4__Impl )
-            // InternalHenshin_text.g:6944:2: rule__IndependentUnit__Group__4__Impl
+            // InternalHenshin_text.g:6992:1: ( rule__IndependentUnit__Group__4__Impl )
+            // InternalHenshin_text.g:6993:2: rule__IndependentUnit__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__IndependentUnit__Group__4__Impl();
@@ -21844,20 +22034,20 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group__4__Impl"
-    // InternalHenshin_text.g:6950:1: rule__IndependentUnit__Group__4__Impl : ( ']' ) ;
+    // InternalHenshin_text.g:6999:1: rule__IndependentUnit__Group__4__Impl : ( ']' ) ;
     public final void rule__IndependentUnit__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6954:1: ( ( ']' ) )
-            // InternalHenshin_text.g:6955:1: ( ']' )
+            // InternalHenshin_text.g:7003:1: ( ( ']' ) )
+            // InternalHenshin_text.g:7004:1: ( ']' )
             {
-            // InternalHenshin_text.g:6955:1: ( ']' )
-            // InternalHenshin_text.g:6956:2: ']'
+            // InternalHenshin_text.g:7004:1: ( ']' )
+            // InternalHenshin_text.g:7005:2: ']'
             {
              before(grammarAccess.getIndependentUnitAccess().getRightSquareBracketKeyword_4()); 
-            match(input,77,FOLLOW_2); 
+            match(input,81,FOLLOW_2); 
              after(grammarAccess.getIndependentUnitAccess().getRightSquareBracketKeyword_4()); 
 
             }
@@ -21881,16 +22071,16 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group_3__0"
-    // InternalHenshin_text.g:6966:1: rule__IndependentUnit__Group_3__0 : rule__IndependentUnit__Group_3__0__Impl rule__IndependentUnit__Group_3__1 ;
+    // InternalHenshin_text.g:7015:1: rule__IndependentUnit__Group_3__0 : rule__IndependentUnit__Group_3__0__Impl rule__IndependentUnit__Group_3__1 ;
     public final void rule__IndependentUnit__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6970:1: ( rule__IndependentUnit__Group_3__0__Impl rule__IndependentUnit__Group_3__1 )
-            // InternalHenshin_text.g:6971:2: rule__IndependentUnit__Group_3__0__Impl rule__IndependentUnit__Group_3__1
+            // InternalHenshin_text.g:7019:1: ( rule__IndependentUnit__Group_3__0__Impl rule__IndependentUnit__Group_3__1 )
+            // InternalHenshin_text.g:7020:2: rule__IndependentUnit__Group_3__0__Impl rule__IndependentUnit__Group_3__1
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__IndependentUnit__Group_3__0__Impl();
 
             state._fsp--;
@@ -21919,20 +22109,20 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group_3__0__Impl"
-    // InternalHenshin_text.g:6978:1: rule__IndependentUnit__Group_3__0__Impl : ( ',' ) ;
+    // InternalHenshin_text.g:7027:1: rule__IndependentUnit__Group_3__0__Impl : ( ',' ) ;
     public final void rule__IndependentUnit__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6982:1: ( ( ',' ) )
-            // InternalHenshin_text.g:6983:1: ( ',' )
+            // InternalHenshin_text.g:7031:1: ( ( ',' ) )
+            // InternalHenshin_text.g:7032:1: ( ',' )
             {
-            // InternalHenshin_text.g:6983:1: ( ',' )
-            // InternalHenshin_text.g:6984:2: ','
+            // InternalHenshin_text.g:7032:1: ( ',' )
+            // InternalHenshin_text.g:7033:2: ','
             {
              before(grammarAccess.getIndependentUnitAccess().getCommaKeyword_3_0()); 
-            match(input,70,FOLLOW_2); 
+            match(input,74,FOLLOW_2); 
              after(grammarAccess.getIndependentUnitAccess().getCommaKeyword_3_0()); 
 
             }
@@ -21956,14 +22146,14 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group_3__1"
-    // InternalHenshin_text.g:6993:1: rule__IndependentUnit__Group_3__1 : rule__IndependentUnit__Group_3__1__Impl ;
+    // InternalHenshin_text.g:7042:1: rule__IndependentUnit__Group_3__1 : rule__IndependentUnit__Group_3__1__Impl ;
     public final void rule__IndependentUnit__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:6997:1: ( rule__IndependentUnit__Group_3__1__Impl )
-            // InternalHenshin_text.g:6998:2: rule__IndependentUnit__Group_3__1__Impl
+            // InternalHenshin_text.g:7046:1: ( rule__IndependentUnit__Group_3__1__Impl )
+            // InternalHenshin_text.g:7047:2: rule__IndependentUnit__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__IndependentUnit__Group_3__1__Impl();
@@ -21989,21 +22179,21 @@
 
 
     // $ANTLR start "rule__IndependentUnit__Group_3__1__Impl"
-    // InternalHenshin_text.g:7004:1: rule__IndependentUnit__Group_3__1__Impl : ( ( rule__IndependentUnit__ListOfListsAssignment_3_1 ) ) ;
+    // InternalHenshin_text.g:7053:1: rule__IndependentUnit__Group_3__1__Impl : ( ( rule__IndependentUnit__ListOfListsAssignment_3_1 ) ) ;
     public final void rule__IndependentUnit__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7008:1: ( ( ( rule__IndependentUnit__ListOfListsAssignment_3_1 ) ) )
-            // InternalHenshin_text.g:7009:1: ( ( rule__IndependentUnit__ListOfListsAssignment_3_1 ) )
+            // InternalHenshin_text.g:7057:1: ( ( ( rule__IndependentUnit__ListOfListsAssignment_3_1 ) ) )
+            // InternalHenshin_text.g:7058:1: ( ( rule__IndependentUnit__ListOfListsAssignment_3_1 ) )
             {
-            // InternalHenshin_text.g:7009:1: ( ( rule__IndependentUnit__ListOfListsAssignment_3_1 ) )
-            // InternalHenshin_text.g:7010:2: ( rule__IndependentUnit__ListOfListsAssignment_3_1 )
+            // InternalHenshin_text.g:7058:1: ( ( rule__IndependentUnit__ListOfListsAssignment_3_1 ) )
+            // InternalHenshin_text.g:7059:2: ( rule__IndependentUnit__ListOfListsAssignment_3_1 )
             {
              before(grammarAccess.getIndependentUnitAccess().getListOfListsAssignment_3_1()); 
-            // InternalHenshin_text.g:7011:2: ( rule__IndependentUnit__ListOfListsAssignment_3_1 )
-            // InternalHenshin_text.g:7011:3: rule__IndependentUnit__ListOfListsAssignment_3_1
+            // InternalHenshin_text.g:7060:2: ( rule__IndependentUnit__ListOfListsAssignment_3_1 )
+            // InternalHenshin_text.g:7060:3: rule__IndependentUnit__ListOfListsAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__IndependentUnit__ListOfListsAssignment_3_1();
@@ -22036,14 +22226,14 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__0"
-    // InternalHenshin_text.g:7020:1: rule__ConditionalUnit__Group__0 : rule__ConditionalUnit__Group__0__Impl rule__ConditionalUnit__Group__1 ;
+    // InternalHenshin_text.g:7069:1: rule__ConditionalUnit__Group__0 : rule__ConditionalUnit__Group__0__Impl rule__ConditionalUnit__Group__1 ;
     public final void rule__ConditionalUnit__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7024:1: ( rule__ConditionalUnit__Group__0__Impl rule__ConditionalUnit__Group__1 )
-            // InternalHenshin_text.g:7025:2: rule__ConditionalUnit__Group__0__Impl rule__ConditionalUnit__Group__1
+            // InternalHenshin_text.g:7073:1: ( rule__ConditionalUnit__Group__0__Impl rule__ConditionalUnit__Group__1 )
+            // InternalHenshin_text.g:7074:2: rule__ConditionalUnit__Group__0__Impl rule__ConditionalUnit__Group__1
             {
             pushFollow(FOLLOW_10);
             rule__ConditionalUnit__Group__0__Impl();
@@ -22074,20 +22264,20 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__0__Impl"
-    // InternalHenshin_text.g:7032:1: rule__ConditionalUnit__Group__0__Impl : ( 'if' ) ;
+    // InternalHenshin_text.g:7081:1: rule__ConditionalUnit__Group__0__Impl : ( 'if' ) ;
     public final void rule__ConditionalUnit__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7036:1: ( ( 'if' ) )
-            // InternalHenshin_text.g:7037:1: ( 'if' )
+            // InternalHenshin_text.g:7085:1: ( ( 'if' ) )
+            // InternalHenshin_text.g:7086:1: ( 'if' )
             {
-            // InternalHenshin_text.g:7037:1: ( 'if' )
-            // InternalHenshin_text.g:7038:2: 'if'
+            // InternalHenshin_text.g:7086:1: ( 'if' )
+            // InternalHenshin_text.g:7087:2: 'if'
             {
              before(grammarAccess.getConditionalUnitAccess().getIfKeyword_0()); 
-            match(input,94,FOLLOW_2); 
+            match(input,98,FOLLOW_2); 
              after(grammarAccess.getConditionalUnitAccess().getIfKeyword_0()); 
 
             }
@@ -22111,16 +22301,16 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__1"
-    // InternalHenshin_text.g:7047:1: rule__ConditionalUnit__Group__1 : rule__ConditionalUnit__Group__1__Impl rule__ConditionalUnit__Group__2 ;
+    // InternalHenshin_text.g:7096:1: rule__ConditionalUnit__Group__1 : rule__ConditionalUnit__Group__1__Impl rule__ConditionalUnit__Group__2 ;
     public final void rule__ConditionalUnit__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7051:1: ( rule__ConditionalUnit__Group__1__Impl rule__ConditionalUnit__Group__2 )
-            // InternalHenshin_text.g:7052:2: rule__ConditionalUnit__Group__1__Impl rule__ConditionalUnit__Group__2
+            // InternalHenshin_text.g:7100:1: ( rule__ConditionalUnit__Group__1__Impl rule__ConditionalUnit__Group__2 )
+            // InternalHenshin_text.g:7101:2: rule__ConditionalUnit__Group__1__Impl rule__ConditionalUnit__Group__2
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__ConditionalUnit__Group__1__Impl();
 
             state._fsp--;
@@ -22149,20 +22339,20 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__1__Impl"
-    // InternalHenshin_text.g:7059:1: rule__ConditionalUnit__Group__1__Impl : ( '(' ) ;
+    // InternalHenshin_text.g:7108:1: rule__ConditionalUnit__Group__1__Impl : ( '(' ) ;
     public final void rule__ConditionalUnit__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7063:1: ( ( '(' ) )
-            // InternalHenshin_text.g:7064:1: ( '(' )
+            // InternalHenshin_text.g:7112:1: ( ( '(' ) )
+            // InternalHenshin_text.g:7113:1: ( '(' )
             {
-            // InternalHenshin_text.g:7064:1: ( '(' )
-            // InternalHenshin_text.g:7065:2: '('
+            // InternalHenshin_text.g:7113:1: ( '(' )
+            // InternalHenshin_text.g:7114:2: '('
             {
              before(grammarAccess.getConditionalUnitAccess().getLeftParenthesisKeyword_1()); 
-            match(input,66,FOLLOW_2); 
+            match(input,70,FOLLOW_2); 
              after(grammarAccess.getConditionalUnitAccess().getLeftParenthesisKeyword_1()); 
 
             }
@@ -22186,16 +22376,16 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__2"
-    // InternalHenshin_text.g:7074:1: rule__ConditionalUnit__Group__2 : rule__ConditionalUnit__Group__2__Impl rule__ConditionalUnit__Group__3 ;
+    // InternalHenshin_text.g:7123:1: rule__ConditionalUnit__Group__2 : rule__ConditionalUnit__Group__2__Impl rule__ConditionalUnit__Group__3 ;
     public final void rule__ConditionalUnit__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7078:1: ( rule__ConditionalUnit__Group__2__Impl rule__ConditionalUnit__Group__3 )
-            // InternalHenshin_text.g:7079:2: rule__ConditionalUnit__Group__2__Impl rule__ConditionalUnit__Group__3
+            // InternalHenshin_text.g:7127:1: ( rule__ConditionalUnit__Group__2__Impl rule__ConditionalUnit__Group__3 )
+            // InternalHenshin_text.g:7128:2: rule__ConditionalUnit__Group__2__Impl rule__ConditionalUnit__Group__3
             {
-            pushFollow(FOLLOW_28);
+            pushFollow(FOLLOW_29);
             rule__ConditionalUnit__Group__2__Impl();
 
             state._fsp--;
@@ -22224,24 +22414,24 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__2__Impl"
-    // InternalHenshin_text.g:7086:1: rule__ConditionalUnit__Group__2__Impl : ( ( ( rule__ConditionalUnit__IfAssignment_2 ) ) ( ( rule__ConditionalUnit__IfAssignment_2 )* ) ) ;
+    // InternalHenshin_text.g:7135:1: rule__ConditionalUnit__Group__2__Impl : ( ( ( rule__ConditionalUnit__IfAssignment_2 ) ) ( ( rule__ConditionalUnit__IfAssignment_2 )* ) ) ;
     public final void rule__ConditionalUnit__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7090:1: ( ( ( ( rule__ConditionalUnit__IfAssignment_2 ) ) ( ( rule__ConditionalUnit__IfAssignment_2 )* ) ) )
-            // InternalHenshin_text.g:7091:1: ( ( ( rule__ConditionalUnit__IfAssignment_2 ) ) ( ( rule__ConditionalUnit__IfAssignment_2 )* ) )
+            // InternalHenshin_text.g:7139:1: ( ( ( ( rule__ConditionalUnit__IfAssignment_2 ) ) ( ( rule__ConditionalUnit__IfAssignment_2 )* ) ) )
+            // InternalHenshin_text.g:7140:1: ( ( ( rule__ConditionalUnit__IfAssignment_2 ) ) ( ( rule__ConditionalUnit__IfAssignment_2 )* ) )
             {
-            // InternalHenshin_text.g:7091:1: ( ( ( rule__ConditionalUnit__IfAssignment_2 ) ) ( ( rule__ConditionalUnit__IfAssignment_2 )* ) )
-            // InternalHenshin_text.g:7092:2: ( ( rule__ConditionalUnit__IfAssignment_2 ) ) ( ( rule__ConditionalUnit__IfAssignment_2 )* )
+            // InternalHenshin_text.g:7140:1: ( ( ( rule__ConditionalUnit__IfAssignment_2 ) ) ( ( rule__ConditionalUnit__IfAssignment_2 )* ) )
+            // InternalHenshin_text.g:7141:2: ( ( rule__ConditionalUnit__IfAssignment_2 ) ) ( ( rule__ConditionalUnit__IfAssignment_2 )* )
             {
-            // InternalHenshin_text.g:7092:2: ( ( rule__ConditionalUnit__IfAssignment_2 ) )
-            // InternalHenshin_text.g:7093:3: ( rule__ConditionalUnit__IfAssignment_2 )
+            // InternalHenshin_text.g:7141:2: ( ( rule__ConditionalUnit__IfAssignment_2 ) )
+            // InternalHenshin_text.g:7142:3: ( rule__ConditionalUnit__IfAssignment_2 )
             {
              before(grammarAccess.getConditionalUnitAccess().getIfAssignment_2()); 
-            // InternalHenshin_text.g:7094:3: ( rule__ConditionalUnit__IfAssignment_2 )
-            // InternalHenshin_text.g:7094:4: rule__ConditionalUnit__IfAssignment_2
+            // InternalHenshin_text.g:7143:3: ( rule__ConditionalUnit__IfAssignment_2 )
+            // InternalHenshin_text.g:7143:4: rule__ConditionalUnit__IfAssignment_2
             {
             pushFollow(FOLLOW_3);
             rule__ConditionalUnit__IfAssignment_2();
@@ -22255,24 +22445,24 @@
 
             }
 
-            // InternalHenshin_text.g:7097:2: ( ( rule__ConditionalUnit__IfAssignment_2 )* )
-            // InternalHenshin_text.g:7098:3: ( rule__ConditionalUnit__IfAssignment_2 )*
+            // InternalHenshin_text.g:7146:2: ( ( rule__ConditionalUnit__IfAssignment_2 )* )
+            // InternalHenshin_text.g:7147:3: ( rule__ConditionalUnit__IfAssignment_2 )*
             {
              before(grammarAccess.getConditionalUnitAccess().getIfAssignment_2()); 
-            // InternalHenshin_text.g:7099:3: ( rule__ConditionalUnit__IfAssignment_2 )*
-            loop54:
+            // InternalHenshin_text.g:7148:3: ( rule__ConditionalUnit__IfAssignment_2 )*
+            loop55:
             do {
-                int alt54=2;
-                int LA54_0 = input.LA(1);
+                int alt55=2;
+                int LA55_0 = input.LA(1);
 
-                if ( (LA54_0==RULE_ID||LA54_0==68||(LA54_0>=91 && LA54_0<=94)||(LA54_0>=97 && LA54_0<=99)) ) {
-                    alt54=1;
+                if ( (LA55_0==RULE_ID||LA55_0==72||(LA55_0>=95 && LA55_0<=98)||(LA55_0>=101 && LA55_0<=103)) ) {
+                    alt55=1;
                 }
 
 
-                switch (alt54) {
+                switch (alt55) {
             	case 1 :
-            	    // InternalHenshin_text.g:7099:4: rule__ConditionalUnit__IfAssignment_2
+            	    // InternalHenshin_text.g:7148:4: rule__ConditionalUnit__IfAssignment_2
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__ConditionalUnit__IfAssignment_2();
@@ -22284,7 +22474,7 @@
             	    break;
 
             	default :
-            	    break loop54;
+            	    break loop55;
                 }
             } while (true);
 
@@ -22314,16 +22504,16 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__3"
-    // InternalHenshin_text.g:7108:1: rule__ConditionalUnit__Group__3 : rule__ConditionalUnit__Group__3__Impl rule__ConditionalUnit__Group__4 ;
+    // InternalHenshin_text.g:7157:1: rule__ConditionalUnit__Group__3 : rule__ConditionalUnit__Group__3__Impl rule__ConditionalUnit__Group__4 ;
     public final void rule__ConditionalUnit__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7112:1: ( rule__ConditionalUnit__Group__3__Impl rule__ConditionalUnit__Group__4 )
-            // InternalHenshin_text.g:7113:2: rule__ConditionalUnit__Group__3__Impl rule__ConditionalUnit__Group__4
+            // InternalHenshin_text.g:7161:1: ( rule__ConditionalUnit__Group__3__Impl rule__ConditionalUnit__Group__4 )
+            // InternalHenshin_text.g:7162:2: rule__ConditionalUnit__Group__3__Impl rule__ConditionalUnit__Group__4
             {
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_48);
             rule__ConditionalUnit__Group__3__Impl();
 
             state._fsp--;
@@ -22352,20 +22542,20 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__3__Impl"
-    // InternalHenshin_text.g:7120:1: rule__ConditionalUnit__Group__3__Impl : ( ')' ) ;
+    // InternalHenshin_text.g:7169:1: rule__ConditionalUnit__Group__3__Impl : ( ')' ) ;
     public final void rule__ConditionalUnit__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7124:1: ( ( ')' ) )
-            // InternalHenshin_text.g:7125:1: ( ')' )
+            // InternalHenshin_text.g:7173:1: ( ( ')' ) )
+            // InternalHenshin_text.g:7174:1: ( ')' )
             {
-            // InternalHenshin_text.g:7125:1: ( ')' )
-            // InternalHenshin_text.g:7126:2: ')'
+            // InternalHenshin_text.g:7174:1: ( ')' )
+            // InternalHenshin_text.g:7175:2: ')'
             {
              before(grammarAccess.getConditionalUnitAccess().getRightParenthesisKeyword_3()); 
-            match(input,67,FOLLOW_2); 
+            match(input,71,FOLLOW_2); 
              after(grammarAccess.getConditionalUnitAccess().getRightParenthesisKeyword_3()); 
 
             }
@@ -22389,14 +22579,14 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__4"
-    // InternalHenshin_text.g:7135:1: rule__ConditionalUnit__Group__4 : rule__ConditionalUnit__Group__4__Impl rule__ConditionalUnit__Group__5 ;
+    // InternalHenshin_text.g:7184:1: rule__ConditionalUnit__Group__4 : rule__ConditionalUnit__Group__4__Impl rule__ConditionalUnit__Group__5 ;
     public final void rule__ConditionalUnit__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7139:1: ( rule__ConditionalUnit__Group__4__Impl rule__ConditionalUnit__Group__5 )
-            // InternalHenshin_text.g:7140:2: rule__ConditionalUnit__Group__4__Impl rule__ConditionalUnit__Group__5
+            // InternalHenshin_text.g:7188:1: ( rule__ConditionalUnit__Group__4__Impl rule__ConditionalUnit__Group__5 )
+            // InternalHenshin_text.g:7189:2: rule__ConditionalUnit__Group__4__Impl rule__ConditionalUnit__Group__5
             {
             pushFollow(FOLLOW_12);
             rule__ConditionalUnit__Group__4__Impl();
@@ -22427,20 +22617,20 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__4__Impl"
-    // InternalHenshin_text.g:7147:1: rule__ConditionalUnit__Group__4__Impl : ( 'then' ) ;
+    // InternalHenshin_text.g:7196:1: rule__ConditionalUnit__Group__4__Impl : ( 'then' ) ;
     public final void rule__ConditionalUnit__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7151:1: ( ( 'then' ) )
-            // InternalHenshin_text.g:7152:1: ( 'then' )
+            // InternalHenshin_text.g:7200:1: ( ( 'then' ) )
+            // InternalHenshin_text.g:7201:1: ( 'then' )
             {
-            // InternalHenshin_text.g:7152:1: ( 'then' )
-            // InternalHenshin_text.g:7153:2: 'then'
+            // InternalHenshin_text.g:7201:1: ( 'then' )
+            // InternalHenshin_text.g:7202:2: 'then'
             {
              before(grammarAccess.getConditionalUnitAccess().getThenKeyword_4()); 
-            match(input,95,FOLLOW_2); 
+            match(input,99,FOLLOW_2); 
              after(grammarAccess.getConditionalUnitAccess().getThenKeyword_4()); 
 
             }
@@ -22464,16 +22654,16 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__5"
-    // InternalHenshin_text.g:7162:1: rule__ConditionalUnit__Group__5 : rule__ConditionalUnit__Group__5__Impl rule__ConditionalUnit__Group__6 ;
+    // InternalHenshin_text.g:7211:1: rule__ConditionalUnit__Group__5 : rule__ConditionalUnit__Group__5__Impl rule__ConditionalUnit__Group__6 ;
     public final void rule__ConditionalUnit__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7166:1: ( rule__ConditionalUnit__Group__5__Impl rule__ConditionalUnit__Group__6 )
-            // InternalHenshin_text.g:7167:2: rule__ConditionalUnit__Group__5__Impl rule__ConditionalUnit__Group__6
+            // InternalHenshin_text.g:7215:1: ( rule__ConditionalUnit__Group__5__Impl rule__ConditionalUnit__Group__6 )
+            // InternalHenshin_text.g:7216:2: rule__ConditionalUnit__Group__5__Impl rule__ConditionalUnit__Group__6
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__ConditionalUnit__Group__5__Impl();
 
             state._fsp--;
@@ -22502,20 +22692,20 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__5__Impl"
-    // InternalHenshin_text.g:7174:1: rule__ConditionalUnit__Group__5__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:7223:1: rule__ConditionalUnit__Group__5__Impl : ( '{' ) ;
     public final void rule__ConditionalUnit__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7178:1: ( ( '{' ) )
-            // InternalHenshin_text.g:7179:1: ( '{' )
+            // InternalHenshin_text.g:7227:1: ( ( '{' ) )
+            // InternalHenshin_text.g:7228:1: ( '{' )
             {
-            // InternalHenshin_text.g:7179:1: ( '{' )
-            // InternalHenshin_text.g:7180:2: '{'
+            // InternalHenshin_text.g:7228:1: ( '{' )
+            // InternalHenshin_text.g:7229:2: '{'
             {
              before(grammarAccess.getConditionalUnitAccess().getLeftCurlyBracketKeyword_5()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getConditionalUnitAccess().getLeftCurlyBracketKeyword_5()); 
 
             }
@@ -22539,14 +22729,14 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__6"
-    // InternalHenshin_text.g:7189:1: rule__ConditionalUnit__Group__6 : rule__ConditionalUnit__Group__6__Impl rule__ConditionalUnit__Group__7 ;
+    // InternalHenshin_text.g:7238:1: rule__ConditionalUnit__Group__6 : rule__ConditionalUnit__Group__6__Impl rule__ConditionalUnit__Group__7 ;
     public final void rule__ConditionalUnit__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7193:1: ( rule__ConditionalUnit__Group__6__Impl rule__ConditionalUnit__Group__7 )
-            // InternalHenshin_text.g:7194:2: rule__ConditionalUnit__Group__6__Impl rule__ConditionalUnit__Group__7
+            // InternalHenshin_text.g:7242:1: ( rule__ConditionalUnit__Group__6__Impl rule__ConditionalUnit__Group__7 )
+            // InternalHenshin_text.g:7243:2: rule__ConditionalUnit__Group__6__Impl rule__ConditionalUnit__Group__7
             {
             pushFollow(FOLLOW_14);
             rule__ConditionalUnit__Group__6__Impl();
@@ -22577,24 +22767,24 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__6__Impl"
-    // InternalHenshin_text.g:7201:1: rule__ConditionalUnit__Group__6__Impl : ( ( ( rule__ConditionalUnit__ThenAssignment_6 ) ) ( ( rule__ConditionalUnit__ThenAssignment_6 )* ) ) ;
+    // InternalHenshin_text.g:7250:1: rule__ConditionalUnit__Group__6__Impl : ( ( ( rule__ConditionalUnit__ThenAssignment_6 ) ) ( ( rule__ConditionalUnit__ThenAssignment_6 )* ) ) ;
     public final void rule__ConditionalUnit__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7205:1: ( ( ( ( rule__ConditionalUnit__ThenAssignment_6 ) ) ( ( rule__ConditionalUnit__ThenAssignment_6 )* ) ) )
-            // InternalHenshin_text.g:7206:1: ( ( ( rule__ConditionalUnit__ThenAssignment_6 ) ) ( ( rule__ConditionalUnit__ThenAssignment_6 )* ) )
+            // InternalHenshin_text.g:7254:1: ( ( ( ( rule__ConditionalUnit__ThenAssignment_6 ) ) ( ( rule__ConditionalUnit__ThenAssignment_6 )* ) ) )
+            // InternalHenshin_text.g:7255:1: ( ( ( rule__ConditionalUnit__ThenAssignment_6 ) ) ( ( rule__ConditionalUnit__ThenAssignment_6 )* ) )
             {
-            // InternalHenshin_text.g:7206:1: ( ( ( rule__ConditionalUnit__ThenAssignment_6 ) ) ( ( rule__ConditionalUnit__ThenAssignment_6 )* ) )
-            // InternalHenshin_text.g:7207:2: ( ( rule__ConditionalUnit__ThenAssignment_6 ) ) ( ( rule__ConditionalUnit__ThenAssignment_6 )* )
+            // InternalHenshin_text.g:7255:1: ( ( ( rule__ConditionalUnit__ThenAssignment_6 ) ) ( ( rule__ConditionalUnit__ThenAssignment_6 )* ) )
+            // InternalHenshin_text.g:7256:2: ( ( rule__ConditionalUnit__ThenAssignment_6 ) ) ( ( rule__ConditionalUnit__ThenAssignment_6 )* )
             {
-            // InternalHenshin_text.g:7207:2: ( ( rule__ConditionalUnit__ThenAssignment_6 ) )
-            // InternalHenshin_text.g:7208:3: ( rule__ConditionalUnit__ThenAssignment_6 )
+            // InternalHenshin_text.g:7256:2: ( ( rule__ConditionalUnit__ThenAssignment_6 ) )
+            // InternalHenshin_text.g:7257:3: ( rule__ConditionalUnit__ThenAssignment_6 )
             {
              before(grammarAccess.getConditionalUnitAccess().getThenAssignment_6()); 
-            // InternalHenshin_text.g:7209:3: ( rule__ConditionalUnit__ThenAssignment_6 )
-            // InternalHenshin_text.g:7209:4: rule__ConditionalUnit__ThenAssignment_6
+            // InternalHenshin_text.g:7258:3: ( rule__ConditionalUnit__ThenAssignment_6 )
+            // InternalHenshin_text.g:7258:4: rule__ConditionalUnit__ThenAssignment_6
             {
             pushFollow(FOLLOW_3);
             rule__ConditionalUnit__ThenAssignment_6();
@@ -22608,24 +22798,24 @@
 
             }
 
-            // InternalHenshin_text.g:7212:2: ( ( rule__ConditionalUnit__ThenAssignment_6 )* )
-            // InternalHenshin_text.g:7213:3: ( rule__ConditionalUnit__ThenAssignment_6 )*
+            // InternalHenshin_text.g:7261:2: ( ( rule__ConditionalUnit__ThenAssignment_6 )* )
+            // InternalHenshin_text.g:7262:3: ( rule__ConditionalUnit__ThenAssignment_6 )*
             {
              before(grammarAccess.getConditionalUnitAccess().getThenAssignment_6()); 
-            // InternalHenshin_text.g:7214:3: ( rule__ConditionalUnit__ThenAssignment_6 )*
-            loop55:
+            // InternalHenshin_text.g:7263:3: ( rule__ConditionalUnit__ThenAssignment_6 )*
+            loop56:
             do {
-                int alt55=2;
-                int LA55_0 = input.LA(1);
+                int alt56=2;
+                int LA56_0 = input.LA(1);
 
-                if ( (LA55_0==RULE_ID||LA55_0==68||(LA55_0>=91 && LA55_0<=94)||(LA55_0>=97 && LA55_0<=99)) ) {
-                    alt55=1;
+                if ( (LA56_0==RULE_ID||LA56_0==72||(LA56_0>=95 && LA56_0<=98)||(LA56_0>=101 && LA56_0<=103)) ) {
+                    alt56=1;
                 }
 
 
-                switch (alt55) {
+                switch (alt56) {
             	case 1 :
-            	    // InternalHenshin_text.g:7214:4: rule__ConditionalUnit__ThenAssignment_6
+            	    // InternalHenshin_text.g:7263:4: rule__ConditionalUnit__ThenAssignment_6
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__ConditionalUnit__ThenAssignment_6();
@@ -22637,7 +22827,7 @@
             	    break;
 
             	default :
-            	    break loop55;
+            	    break loop56;
                 }
             } while (true);
 
@@ -22667,16 +22857,16 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__7"
-    // InternalHenshin_text.g:7223:1: rule__ConditionalUnit__Group__7 : rule__ConditionalUnit__Group__7__Impl rule__ConditionalUnit__Group__8 ;
+    // InternalHenshin_text.g:7272:1: rule__ConditionalUnit__Group__7 : rule__ConditionalUnit__Group__7__Impl rule__ConditionalUnit__Group__8 ;
     public final void rule__ConditionalUnit__Group__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7227:1: ( rule__ConditionalUnit__Group__7__Impl rule__ConditionalUnit__Group__8 )
-            // InternalHenshin_text.g:7228:2: rule__ConditionalUnit__Group__7__Impl rule__ConditionalUnit__Group__8
+            // InternalHenshin_text.g:7276:1: ( rule__ConditionalUnit__Group__7__Impl rule__ConditionalUnit__Group__8 )
+            // InternalHenshin_text.g:7277:2: rule__ConditionalUnit__Group__7__Impl rule__ConditionalUnit__Group__8
             {
-            pushFollow(FOLLOW_47);
+            pushFollow(FOLLOW_49);
             rule__ConditionalUnit__Group__7__Impl();
 
             state._fsp--;
@@ -22705,20 +22895,20 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__7__Impl"
-    // InternalHenshin_text.g:7235:1: rule__ConditionalUnit__Group__7__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:7284:1: rule__ConditionalUnit__Group__7__Impl : ( '}' ) ;
     public final void rule__ConditionalUnit__Group__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7239:1: ( ( '}' ) )
-            // InternalHenshin_text.g:7240:1: ( '}' )
+            // InternalHenshin_text.g:7288:1: ( ( '}' ) )
+            // InternalHenshin_text.g:7289:1: ( '}' )
             {
-            // InternalHenshin_text.g:7240:1: ( '}' )
-            // InternalHenshin_text.g:7241:2: '}'
+            // InternalHenshin_text.g:7289:1: ( '}' )
+            // InternalHenshin_text.g:7290:2: '}'
             {
              before(grammarAccess.getConditionalUnitAccess().getRightCurlyBracketKeyword_7()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getConditionalUnitAccess().getRightCurlyBracketKeyword_7()); 
 
             }
@@ -22742,14 +22932,14 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__8"
-    // InternalHenshin_text.g:7250:1: rule__ConditionalUnit__Group__8 : rule__ConditionalUnit__Group__8__Impl ;
+    // InternalHenshin_text.g:7299:1: rule__ConditionalUnit__Group__8 : rule__ConditionalUnit__Group__8__Impl ;
     public final void rule__ConditionalUnit__Group__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7254:1: ( rule__ConditionalUnit__Group__8__Impl )
-            // InternalHenshin_text.g:7255:2: rule__ConditionalUnit__Group__8__Impl
+            // InternalHenshin_text.g:7303:1: ( rule__ConditionalUnit__Group__8__Impl )
+            // InternalHenshin_text.g:7304:2: rule__ConditionalUnit__Group__8__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ConditionalUnit__Group__8__Impl();
@@ -22775,29 +22965,29 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group__8__Impl"
-    // InternalHenshin_text.g:7261:1: rule__ConditionalUnit__Group__8__Impl : ( ( rule__ConditionalUnit__Group_8__0 )? ) ;
+    // InternalHenshin_text.g:7310:1: rule__ConditionalUnit__Group__8__Impl : ( ( rule__ConditionalUnit__Group_8__0 )? ) ;
     public final void rule__ConditionalUnit__Group__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7265:1: ( ( ( rule__ConditionalUnit__Group_8__0 )? ) )
-            // InternalHenshin_text.g:7266:1: ( ( rule__ConditionalUnit__Group_8__0 )? )
+            // InternalHenshin_text.g:7314:1: ( ( ( rule__ConditionalUnit__Group_8__0 )? ) )
+            // InternalHenshin_text.g:7315:1: ( ( rule__ConditionalUnit__Group_8__0 )? )
             {
-            // InternalHenshin_text.g:7266:1: ( ( rule__ConditionalUnit__Group_8__0 )? )
-            // InternalHenshin_text.g:7267:2: ( rule__ConditionalUnit__Group_8__0 )?
+            // InternalHenshin_text.g:7315:1: ( ( rule__ConditionalUnit__Group_8__0 )? )
+            // InternalHenshin_text.g:7316:2: ( rule__ConditionalUnit__Group_8__0 )?
             {
              before(grammarAccess.getConditionalUnitAccess().getGroup_8()); 
-            // InternalHenshin_text.g:7268:2: ( rule__ConditionalUnit__Group_8__0 )?
-            int alt56=2;
-            int LA56_0 = input.LA(1);
+            // InternalHenshin_text.g:7317:2: ( rule__ConditionalUnit__Group_8__0 )?
+            int alt57=2;
+            int LA57_0 = input.LA(1);
 
-            if ( (LA56_0==96) ) {
-                alt56=1;
+            if ( (LA57_0==100) ) {
+                alt57=1;
             }
-            switch (alt56) {
+            switch (alt57) {
                 case 1 :
-                    // InternalHenshin_text.g:7268:3: rule__ConditionalUnit__Group_8__0
+                    // InternalHenshin_text.g:7317:3: rule__ConditionalUnit__Group_8__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__ConditionalUnit__Group_8__0();
@@ -22833,14 +23023,14 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group_8__0"
-    // InternalHenshin_text.g:7277:1: rule__ConditionalUnit__Group_8__0 : rule__ConditionalUnit__Group_8__0__Impl rule__ConditionalUnit__Group_8__1 ;
+    // InternalHenshin_text.g:7326:1: rule__ConditionalUnit__Group_8__0 : rule__ConditionalUnit__Group_8__0__Impl rule__ConditionalUnit__Group_8__1 ;
     public final void rule__ConditionalUnit__Group_8__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7281:1: ( rule__ConditionalUnit__Group_8__0__Impl rule__ConditionalUnit__Group_8__1 )
-            // InternalHenshin_text.g:7282:2: rule__ConditionalUnit__Group_8__0__Impl rule__ConditionalUnit__Group_8__1
+            // InternalHenshin_text.g:7330:1: ( rule__ConditionalUnit__Group_8__0__Impl rule__ConditionalUnit__Group_8__1 )
+            // InternalHenshin_text.g:7331:2: rule__ConditionalUnit__Group_8__0__Impl rule__ConditionalUnit__Group_8__1
             {
             pushFollow(FOLLOW_12);
             rule__ConditionalUnit__Group_8__0__Impl();
@@ -22871,20 +23061,20 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group_8__0__Impl"
-    // InternalHenshin_text.g:7289:1: rule__ConditionalUnit__Group_8__0__Impl : ( 'else' ) ;
+    // InternalHenshin_text.g:7338:1: rule__ConditionalUnit__Group_8__0__Impl : ( 'else' ) ;
     public final void rule__ConditionalUnit__Group_8__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7293:1: ( ( 'else' ) )
-            // InternalHenshin_text.g:7294:1: ( 'else' )
+            // InternalHenshin_text.g:7342:1: ( ( 'else' ) )
+            // InternalHenshin_text.g:7343:1: ( 'else' )
             {
-            // InternalHenshin_text.g:7294:1: ( 'else' )
-            // InternalHenshin_text.g:7295:2: 'else'
+            // InternalHenshin_text.g:7343:1: ( 'else' )
+            // InternalHenshin_text.g:7344:2: 'else'
             {
              before(grammarAccess.getConditionalUnitAccess().getElseKeyword_8_0()); 
-            match(input,96,FOLLOW_2); 
+            match(input,100,FOLLOW_2); 
              after(grammarAccess.getConditionalUnitAccess().getElseKeyword_8_0()); 
 
             }
@@ -22908,16 +23098,16 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group_8__1"
-    // InternalHenshin_text.g:7304:1: rule__ConditionalUnit__Group_8__1 : rule__ConditionalUnit__Group_8__1__Impl rule__ConditionalUnit__Group_8__2 ;
+    // InternalHenshin_text.g:7353:1: rule__ConditionalUnit__Group_8__1 : rule__ConditionalUnit__Group_8__1__Impl rule__ConditionalUnit__Group_8__2 ;
     public final void rule__ConditionalUnit__Group_8__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7308:1: ( rule__ConditionalUnit__Group_8__1__Impl rule__ConditionalUnit__Group_8__2 )
-            // InternalHenshin_text.g:7309:2: rule__ConditionalUnit__Group_8__1__Impl rule__ConditionalUnit__Group_8__2
+            // InternalHenshin_text.g:7357:1: ( rule__ConditionalUnit__Group_8__1__Impl rule__ConditionalUnit__Group_8__2 )
+            // InternalHenshin_text.g:7358:2: rule__ConditionalUnit__Group_8__1__Impl rule__ConditionalUnit__Group_8__2
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__ConditionalUnit__Group_8__1__Impl();
 
             state._fsp--;
@@ -22946,20 +23136,20 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group_8__1__Impl"
-    // InternalHenshin_text.g:7316:1: rule__ConditionalUnit__Group_8__1__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:7365:1: rule__ConditionalUnit__Group_8__1__Impl : ( '{' ) ;
     public final void rule__ConditionalUnit__Group_8__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7320:1: ( ( '{' ) )
-            // InternalHenshin_text.g:7321:1: ( '{' )
+            // InternalHenshin_text.g:7369:1: ( ( '{' ) )
+            // InternalHenshin_text.g:7370:1: ( '{' )
             {
-            // InternalHenshin_text.g:7321:1: ( '{' )
-            // InternalHenshin_text.g:7322:2: '{'
+            // InternalHenshin_text.g:7370:1: ( '{' )
+            // InternalHenshin_text.g:7371:2: '{'
             {
              before(grammarAccess.getConditionalUnitAccess().getLeftCurlyBracketKeyword_8_1()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getConditionalUnitAccess().getLeftCurlyBracketKeyword_8_1()); 
 
             }
@@ -22983,14 +23173,14 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group_8__2"
-    // InternalHenshin_text.g:7331:1: rule__ConditionalUnit__Group_8__2 : rule__ConditionalUnit__Group_8__2__Impl rule__ConditionalUnit__Group_8__3 ;
+    // InternalHenshin_text.g:7380:1: rule__ConditionalUnit__Group_8__2 : rule__ConditionalUnit__Group_8__2__Impl rule__ConditionalUnit__Group_8__3 ;
     public final void rule__ConditionalUnit__Group_8__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7335:1: ( rule__ConditionalUnit__Group_8__2__Impl rule__ConditionalUnit__Group_8__3 )
-            // InternalHenshin_text.g:7336:2: rule__ConditionalUnit__Group_8__2__Impl rule__ConditionalUnit__Group_8__3
+            // InternalHenshin_text.g:7384:1: ( rule__ConditionalUnit__Group_8__2__Impl rule__ConditionalUnit__Group_8__3 )
+            // InternalHenshin_text.g:7385:2: rule__ConditionalUnit__Group_8__2__Impl rule__ConditionalUnit__Group_8__3
             {
             pushFollow(FOLLOW_14);
             rule__ConditionalUnit__Group_8__2__Impl();
@@ -23021,24 +23211,24 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group_8__2__Impl"
-    // InternalHenshin_text.g:7343:1: rule__ConditionalUnit__Group_8__2__Impl : ( ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) ) ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* ) ) ;
+    // InternalHenshin_text.g:7392:1: rule__ConditionalUnit__Group_8__2__Impl : ( ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) ) ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* ) ) ;
     public final void rule__ConditionalUnit__Group_8__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7347:1: ( ( ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) ) ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* ) ) )
-            // InternalHenshin_text.g:7348:1: ( ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) ) ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* ) )
+            // InternalHenshin_text.g:7396:1: ( ( ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) ) ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* ) ) )
+            // InternalHenshin_text.g:7397:1: ( ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) ) ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* ) )
             {
-            // InternalHenshin_text.g:7348:1: ( ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) ) ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* ) )
-            // InternalHenshin_text.g:7349:2: ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) ) ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* )
+            // InternalHenshin_text.g:7397:1: ( ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) ) ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* ) )
+            // InternalHenshin_text.g:7398:2: ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) ) ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* )
             {
-            // InternalHenshin_text.g:7349:2: ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) )
-            // InternalHenshin_text.g:7350:3: ( rule__ConditionalUnit__ElseAssignment_8_2 )
+            // InternalHenshin_text.g:7398:2: ( ( rule__ConditionalUnit__ElseAssignment_8_2 ) )
+            // InternalHenshin_text.g:7399:3: ( rule__ConditionalUnit__ElseAssignment_8_2 )
             {
              before(grammarAccess.getConditionalUnitAccess().getElseAssignment_8_2()); 
-            // InternalHenshin_text.g:7351:3: ( rule__ConditionalUnit__ElseAssignment_8_2 )
-            // InternalHenshin_text.g:7351:4: rule__ConditionalUnit__ElseAssignment_8_2
+            // InternalHenshin_text.g:7400:3: ( rule__ConditionalUnit__ElseAssignment_8_2 )
+            // InternalHenshin_text.g:7400:4: rule__ConditionalUnit__ElseAssignment_8_2
             {
             pushFollow(FOLLOW_3);
             rule__ConditionalUnit__ElseAssignment_8_2();
@@ -23052,24 +23242,24 @@
 
             }
 
-            // InternalHenshin_text.g:7354:2: ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* )
-            // InternalHenshin_text.g:7355:3: ( rule__ConditionalUnit__ElseAssignment_8_2 )*
+            // InternalHenshin_text.g:7403:2: ( ( rule__ConditionalUnit__ElseAssignment_8_2 )* )
+            // InternalHenshin_text.g:7404:3: ( rule__ConditionalUnit__ElseAssignment_8_2 )*
             {
              before(grammarAccess.getConditionalUnitAccess().getElseAssignment_8_2()); 
-            // InternalHenshin_text.g:7356:3: ( rule__ConditionalUnit__ElseAssignment_8_2 )*
-            loop57:
+            // InternalHenshin_text.g:7405:3: ( rule__ConditionalUnit__ElseAssignment_8_2 )*
+            loop58:
             do {
-                int alt57=2;
-                int LA57_0 = input.LA(1);
+                int alt58=2;
+                int LA58_0 = input.LA(1);
 
-                if ( (LA57_0==RULE_ID||LA57_0==68||(LA57_0>=91 && LA57_0<=94)||(LA57_0>=97 && LA57_0<=99)) ) {
-                    alt57=1;
+                if ( (LA58_0==RULE_ID||LA58_0==72||(LA58_0>=95 && LA58_0<=98)||(LA58_0>=101 && LA58_0<=103)) ) {
+                    alt58=1;
                 }
 
 
-                switch (alt57) {
+                switch (alt58) {
             	case 1 :
-            	    // InternalHenshin_text.g:7356:4: rule__ConditionalUnit__ElseAssignment_8_2
+            	    // InternalHenshin_text.g:7405:4: rule__ConditionalUnit__ElseAssignment_8_2
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__ConditionalUnit__ElseAssignment_8_2();
@@ -23081,7 +23271,7 @@
             	    break;
 
             	default :
-            	    break loop57;
+            	    break loop58;
                 }
             } while (true);
 
@@ -23111,14 +23301,14 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group_8__3"
-    // InternalHenshin_text.g:7365:1: rule__ConditionalUnit__Group_8__3 : rule__ConditionalUnit__Group_8__3__Impl ;
+    // InternalHenshin_text.g:7414:1: rule__ConditionalUnit__Group_8__3 : rule__ConditionalUnit__Group_8__3__Impl ;
     public final void rule__ConditionalUnit__Group_8__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7369:1: ( rule__ConditionalUnit__Group_8__3__Impl )
-            // InternalHenshin_text.g:7370:2: rule__ConditionalUnit__Group_8__3__Impl
+            // InternalHenshin_text.g:7418:1: ( rule__ConditionalUnit__Group_8__3__Impl )
+            // InternalHenshin_text.g:7419:2: rule__ConditionalUnit__Group_8__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ConditionalUnit__Group_8__3__Impl();
@@ -23144,20 +23334,20 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__Group_8__3__Impl"
-    // InternalHenshin_text.g:7376:1: rule__ConditionalUnit__Group_8__3__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:7425:1: rule__ConditionalUnit__Group_8__3__Impl : ( '}' ) ;
     public final void rule__ConditionalUnit__Group_8__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7380:1: ( ( '}' ) )
-            // InternalHenshin_text.g:7381:1: ( '}' )
+            // InternalHenshin_text.g:7429:1: ( ( '}' ) )
+            // InternalHenshin_text.g:7430:1: ( '}' )
             {
-            // InternalHenshin_text.g:7381:1: ( '}' )
-            // InternalHenshin_text.g:7382:2: '}'
+            // InternalHenshin_text.g:7430:1: ( '}' )
+            // InternalHenshin_text.g:7431:2: '}'
             {
              before(grammarAccess.getConditionalUnitAccess().getRightCurlyBracketKeyword_8_3()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getConditionalUnitAccess().getRightCurlyBracketKeyword_8_3()); 
 
             }
@@ -23181,16 +23371,16 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group__0"
-    // InternalHenshin_text.g:7392:1: rule__PriorityUnit__Group__0 : rule__PriorityUnit__Group__0__Impl rule__PriorityUnit__Group__1 ;
+    // InternalHenshin_text.g:7441:1: rule__PriorityUnit__Group__0 : rule__PriorityUnit__Group__0__Impl rule__PriorityUnit__Group__1 ;
     public final void rule__PriorityUnit__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7396:1: ( rule__PriorityUnit__Group__0__Impl rule__PriorityUnit__Group__1 )
-            // InternalHenshin_text.g:7397:2: rule__PriorityUnit__Group__0__Impl rule__PriorityUnit__Group__1
+            // InternalHenshin_text.g:7445:1: ( rule__PriorityUnit__Group__0__Impl rule__PriorityUnit__Group__1 )
+            // InternalHenshin_text.g:7446:2: rule__PriorityUnit__Group__0__Impl rule__PriorityUnit__Group__1
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_21);
             rule__PriorityUnit__Group__0__Impl();
 
             state._fsp--;
@@ -23219,20 +23409,20 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group__0__Impl"
-    // InternalHenshin_text.g:7404:1: rule__PriorityUnit__Group__0__Impl : ( 'priority' ) ;
+    // InternalHenshin_text.g:7453:1: rule__PriorityUnit__Group__0__Impl : ( 'priority' ) ;
     public final void rule__PriorityUnit__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7408:1: ( ( 'priority' ) )
-            // InternalHenshin_text.g:7409:1: ( 'priority' )
+            // InternalHenshin_text.g:7457:1: ( ( 'priority' ) )
+            // InternalHenshin_text.g:7458:1: ( 'priority' )
             {
-            // InternalHenshin_text.g:7409:1: ( 'priority' )
-            // InternalHenshin_text.g:7410:2: 'priority'
+            // InternalHenshin_text.g:7458:1: ( 'priority' )
+            // InternalHenshin_text.g:7459:2: 'priority'
             {
              before(grammarAccess.getPriorityUnitAccess().getPriorityKeyword_0()); 
-            match(input,97,FOLLOW_2); 
+            match(input,101,FOLLOW_2); 
              after(grammarAccess.getPriorityUnitAccess().getPriorityKeyword_0()); 
 
             }
@@ -23256,16 +23446,16 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group__1"
-    // InternalHenshin_text.g:7419:1: rule__PriorityUnit__Group__1 : rule__PriorityUnit__Group__1__Impl rule__PriorityUnit__Group__2 ;
+    // InternalHenshin_text.g:7468:1: rule__PriorityUnit__Group__1 : rule__PriorityUnit__Group__1__Impl rule__PriorityUnit__Group__2 ;
     public final void rule__PriorityUnit__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7423:1: ( rule__PriorityUnit__Group__1__Impl rule__PriorityUnit__Group__2 )
-            // InternalHenshin_text.g:7424:2: rule__PriorityUnit__Group__1__Impl rule__PriorityUnit__Group__2
+            // InternalHenshin_text.g:7472:1: ( rule__PriorityUnit__Group__1__Impl rule__PriorityUnit__Group__2 )
+            // InternalHenshin_text.g:7473:2: rule__PriorityUnit__Group__1__Impl rule__PriorityUnit__Group__2
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__PriorityUnit__Group__1__Impl();
 
             state._fsp--;
@@ -23294,20 +23484,20 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group__1__Impl"
-    // InternalHenshin_text.g:7431:1: rule__PriorityUnit__Group__1__Impl : ( '[' ) ;
+    // InternalHenshin_text.g:7480:1: rule__PriorityUnit__Group__1__Impl : ( '[' ) ;
     public final void rule__PriorityUnit__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7435:1: ( ( '[' ) )
-            // InternalHenshin_text.g:7436:1: ( '[' )
+            // InternalHenshin_text.g:7484:1: ( ( '[' ) )
+            // InternalHenshin_text.g:7485:1: ( '[' )
             {
-            // InternalHenshin_text.g:7436:1: ( '[' )
-            // InternalHenshin_text.g:7437:2: '['
+            // InternalHenshin_text.g:7485:1: ( '[' )
+            // InternalHenshin_text.g:7486:2: '['
             {
              before(grammarAccess.getPriorityUnitAccess().getLeftSquareBracketKeyword_1()); 
-            match(input,76,FOLLOW_2); 
+            match(input,80,FOLLOW_2); 
              after(grammarAccess.getPriorityUnitAccess().getLeftSquareBracketKeyword_1()); 
 
             }
@@ -23331,16 +23521,16 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group__2"
-    // InternalHenshin_text.g:7446:1: rule__PriorityUnit__Group__2 : rule__PriorityUnit__Group__2__Impl rule__PriorityUnit__Group__3 ;
+    // InternalHenshin_text.g:7495:1: rule__PriorityUnit__Group__2 : rule__PriorityUnit__Group__2__Impl rule__PriorityUnit__Group__3 ;
     public final void rule__PriorityUnit__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7450:1: ( rule__PriorityUnit__Group__2__Impl rule__PriorityUnit__Group__3 )
-            // InternalHenshin_text.g:7451:2: rule__PriorityUnit__Group__2__Impl rule__PriorityUnit__Group__3
+            // InternalHenshin_text.g:7499:1: ( rule__PriorityUnit__Group__2__Impl rule__PriorityUnit__Group__3 )
+            // InternalHenshin_text.g:7500:2: rule__PriorityUnit__Group__2__Impl rule__PriorityUnit__Group__3
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_23);
             rule__PriorityUnit__Group__2__Impl();
 
             state._fsp--;
@@ -23369,21 +23559,21 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group__2__Impl"
-    // InternalHenshin_text.g:7458:1: rule__PriorityUnit__Group__2__Impl : ( ( rule__PriorityUnit__ListOfListsAssignment_2 ) ) ;
+    // InternalHenshin_text.g:7507:1: rule__PriorityUnit__Group__2__Impl : ( ( rule__PriorityUnit__ListOfListsAssignment_2 ) ) ;
     public final void rule__PriorityUnit__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7462:1: ( ( ( rule__PriorityUnit__ListOfListsAssignment_2 ) ) )
-            // InternalHenshin_text.g:7463:1: ( ( rule__PriorityUnit__ListOfListsAssignment_2 ) )
+            // InternalHenshin_text.g:7511:1: ( ( ( rule__PriorityUnit__ListOfListsAssignment_2 ) ) )
+            // InternalHenshin_text.g:7512:1: ( ( rule__PriorityUnit__ListOfListsAssignment_2 ) )
             {
-            // InternalHenshin_text.g:7463:1: ( ( rule__PriorityUnit__ListOfListsAssignment_2 ) )
-            // InternalHenshin_text.g:7464:2: ( rule__PriorityUnit__ListOfListsAssignment_2 )
+            // InternalHenshin_text.g:7512:1: ( ( rule__PriorityUnit__ListOfListsAssignment_2 ) )
+            // InternalHenshin_text.g:7513:2: ( rule__PriorityUnit__ListOfListsAssignment_2 )
             {
              before(grammarAccess.getPriorityUnitAccess().getListOfListsAssignment_2()); 
-            // InternalHenshin_text.g:7465:2: ( rule__PriorityUnit__ListOfListsAssignment_2 )
-            // InternalHenshin_text.g:7465:3: rule__PriorityUnit__ListOfListsAssignment_2
+            // InternalHenshin_text.g:7514:2: ( rule__PriorityUnit__ListOfListsAssignment_2 )
+            // InternalHenshin_text.g:7514:3: rule__PriorityUnit__ListOfListsAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__PriorityUnit__ListOfListsAssignment_2();
@@ -23416,16 +23606,16 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group__3"
-    // InternalHenshin_text.g:7473:1: rule__PriorityUnit__Group__3 : rule__PriorityUnit__Group__3__Impl rule__PriorityUnit__Group__4 ;
+    // InternalHenshin_text.g:7522:1: rule__PriorityUnit__Group__3 : rule__PriorityUnit__Group__3__Impl rule__PriorityUnit__Group__4 ;
     public final void rule__PriorityUnit__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7477:1: ( rule__PriorityUnit__Group__3__Impl rule__PriorityUnit__Group__4 )
-            // InternalHenshin_text.g:7478:2: rule__PriorityUnit__Group__3__Impl rule__PriorityUnit__Group__4
+            // InternalHenshin_text.g:7526:1: ( rule__PriorityUnit__Group__3__Impl rule__PriorityUnit__Group__4 )
+            // InternalHenshin_text.g:7527:2: rule__PriorityUnit__Group__3__Impl rule__PriorityUnit__Group__4
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_23);
             rule__PriorityUnit__Group__3__Impl();
 
             state._fsp--;
@@ -23454,33 +23644,33 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group__3__Impl"
-    // InternalHenshin_text.g:7485:1: rule__PriorityUnit__Group__3__Impl : ( ( rule__PriorityUnit__Group_3__0 )* ) ;
+    // InternalHenshin_text.g:7534:1: rule__PriorityUnit__Group__3__Impl : ( ( rule__PriorityUnit__Group_3__0 )* ) ;
     public final void rule__PriorityUnit__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7489:1: ( ( ( rule__PriorityUnit__Group_3__0 )* ) )
-            // InternalHenshin_text.g:7490:1: ( ( rule__PriorityUnit__Group_3__0 )* )
+            // InternalHenshin_text.g:7538:1: ( ( ( rule__PriorityUnit__Group_3__0 )* ) )
+            // InternalHenshin_text.g:7539:1: ( ( rule__PriorityUnit__Group_3__0 )* )
             {
-            // InternalHenshin_text.g:7490:1: ( ( rule__PriorityUnit__Group_3__0 )* )
-            // InternalHenshin_text.g:7491:2: ( rule__PriorityUnit__Group_3__0 )*
+            // InternalHenshin_text.g:7539:1: ( ( rule__PriorityUnit__Group_3__0 )* )
+            // InternalHenshin_text.g:7540:2: ( rule__PriorityUnit__Group_3__0 )*
             {
              before(grammarAccess.getPriorityUnitAccess().getGroup_3()); 
-            // InternalHenshin_text.g:7492:2: ( rule__PriorityUnit__Group_3__0 )*
-            loop58:
+            // InternalHenshin_text.g:7541:2: ( rule__PriorityUnit__Group_3__0 )*
+            loop59:
             do {
-                int alt58=2;
-                int LA58_0 = input.LA(1);
+                int alt59=2;
+                int LA59_0 = input.LA(1);
 
-                if ( (LA58_0==70) ) {
-                    alt58=1;
+                if ( (LA59_0==74) ) {
+                    alt59=1;
                 }
 
 
-                switch (alt58) {
+                switch (alt59) {
             	case 1 :
-            	    // InternalHenshin_text.g:7492:3: rule__PriorityUnit__Group_3__0
+            	    // InternalHenshin_text.g:7541:3: rule__PriorityUnit__Group_3__0
             	    {
             	    pushFollow(FOLLOW_17);
             	    rule__PriorityUnit__Group_3__0();
@@ -23492,7 +23682,7 @@
             	    break;
 
             	default :
-            	    break loop58;
+            	    break loop59;
                 }
             } while (true);
 
@@ -23519,14 +23709,14 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group__4"
-    // InternalHenshin_text.g:7500:1: rule__PriorityUnit__Group__4 : rule__PriorityUnit__Group__4__Impl ;
+    // InternalHenshin_text.g:7549:1: rule__PriorityUnit__Group__4 : rule__PriorityUnit__Group__4__Impl ;
     public final void rule__PriorityUnit__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7504:1: ( rule__PriorityUnit__Group__4__Impl )
-            // InternalHenshin_text.g:7505:2: rule__PriorityUnit__Group__4__Impl
+            // InternalHenshin_text.g:7553:1: ( rule__PriorityUnit__Group__4__Impl )
+            // InternalHenshin_text.g:7554:2: rule__PriorityUnit__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PriorityUnit__Group__4__Impl();
@@ -23552,20 +23742,20 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group__4__Impl"
-    // InternalHenshin_text.g:7511:1: rule__PriorityUnit__Group__4__Impl : ( ']' ) ;
+    // InternalHenshin_text.g:7560:1: rule__PriorityUnit__Group__4__Impl : ( ']' ) ;
     public final void rule__PriorityUnit__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7515:1: ( ( ']' ) )
-            // InternalHenshin_text.g:7516:1: ( ']' )
+            // InternalHenshin_text.g:7564:1: ( ( ']' ) )
+            // InternalHenshin_text.g:7565:1: ( ']' )
             {
-            // InternalHenshin_text.g:7516:1: ( ']' )
-            // InternalHenshin_text.g:7517:2: ']'
+            // InternalHenshin_text.g:7565:1: ( ']' )
+            // InternalHenshin_text.g:7566:2: ']'
             {
              before(grammarAccess.getPriorityUnitAccess().getRightSquareBracketKeyword_4()); 
-            match(input,77,FOLLOW_2); 
+            match(input,81,FOLLOW_2); 
              after(grammarAccess.getPriorityUnitAccess().getRightSquareBracketKeyword_4()); 
 
             }
@@ -23589,16 +23779,16 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group_3__0"
-    // InternalHenshin_text.g:7527:1: rule__PriorityUnit__Group_3__0 : rule__PriorityUnit__Group_3__0__Impl rule__PriorityUnit__Group_3__1 ;
+    // InternalHenshin_text.g:7576:1: rule__PriorityUnit__Group_3__0 : rule__PriorityUnit__Group_3__0__Impl rule__PriorityUnit__Group_3__1 ;
     public final void rule__PriorityUnit__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7531:1: ( rule__PriorityUnit__Group_3__0__Impl rule__PriorityUnit__Group_3__1 )
-            // InternalHenshin_text.g:7532:2: rule__PriorityUnit__Group_3__0__Impl rule__PriorityUnit__Group_3__1
+            // InternalHenshin_text.g:7580:1: ( rule__PriorityUnit__Group_3__0__Impl rule__PriorityUnit__Group_3__1 )
+            // InternalHenshin_text.g:7581:2: rule__PriorityUnit__Group_3__0__Impl rule__PriorityUnit__Group_3__1
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__PriorityUnit__Group_3__0__Impl();
 
             state._fsp--;
@@ -23627,20 +23817,20 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group_3__0__Impl"
-    // InternalHenshin_text.g:7539:1: rule__PriorityUnit__Group_3__0__Impl : ( ',' ) ;
+    // InternalHenshin_text.g:7588:1: rule__PriorityUnit__Group_3__0__Impl : ( ',' ) ;
     public final void rule__PriorityUnit__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7543:1: ( ( ',' ) )
-            // InternalHenshin_text.g:7544:1: ( ',' )
+            // InternalHenshin_text.g:7592:1: ( ( ',' ) )
+            // InternalHenshin_text.g:7593:1: ( ',' )
             {
-            // InternalHenshin_text.g:7544:1: ( ',' )
-            // InternalHenshin_text.g:7545:2: ','
+            // InternalHenshin_text.g:7593:1: ( ',' )
+            // InternalHenshin_text.g:7594:2: ','
             {
              before(grammarAccess.getPriorityUnitAccess().getCommaKeyword_3_0()); 
-            match(input,70,FOLLOW_2); 
+            match(input,74,FOLLOW_2); 
              after(grammarAccess.getPriorityUnitAccess().getCommaKeyword_3_0()); 
 
             }
@@ -23664,14 +23854,14 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group_3__1"
-    // InternalHenshin_text.g:7554:1: rule__PriorityUnit__Group_3__1 : rule__PriorityUnit__Group_3__1__Impl ;
+    // InternalHenshin_text.g:7603:1: rule__PriorityUnit__Group_3__1 : rule__PriorityUnit__Group_3__1__Impl ;
     public final void rule__PriorityUnit__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7558:1: ( rule__PriorityUnit__Group_3__1__Impl )
-            // InternalHenshin_text.g:7559:2: rule__PriorityUnit__Group_3__1__Impl
+            // InternalHenshin_text.g:7607:1: ( rule__PriorityUnit__Group_3__1__Impl )
+            // InternalHenshin_text.g:7608:2: rule__PriorityUnit__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PriorityUnit__Group_3__1__Impl();
@@ -23697,21 +23887,21 @@
 
 
     // $ANTLR start "rule__PriorityUnit__Group_3__1__Impl"
-    // InternalHenshin_text.g:7565:1: rule__PriorityUnit__Group_3__1__Impl : ( ( rule__PriorityUnit__ListOfListsAssignment_3_1 ) ) ;
+    // InternalHenshin_text.g:7614:1: rule__PriorityUnit__Group_3__1__Impl : ( ( rule__PriorityUnit__ListOfListsAssignment_3_1 ) ) ;
     public final void rule__PriorityUnit__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7569:1: ( ( ( rule__PriorityUnit__ListOfListsAssignment_3_1 ) ) )
-            // InternalHenshin_text.g:7570:1: ( ( rule__PriorityUnit__ListOfListsAssignment_3_1 ) )
+            // InternalHenshin_text.g:7618:1: ( ( ( rule__PriorityUnit__ListOfListsAssignment_3_1 ) ) )
+            // InternalHenshin_text.g:7619:1: ( ( rule__PriorityUnit__ListOfListsAssignment_3_1 ) )
             {
-            // InternalHenshin_text.g:7570:1: ( ( rule__PriorityUnit__ListOfListsAssignment_3_1 ) )
-            // InternalHenshin_text.g:7571:2: ( rule__PriorityUnit__ListOfListsAssignment_3_1 )
+            // InternalHenshin_text.g:7619:1: ( ( rule__PriorityUnit__ListOfListsAssignment_3_1 ) )
+            // InternalHenshin_text.g:7620:2: ( rule__PriorityUnit__ListOfListsAssignment_3_1 )
             {
              before(grammarAccess.getPriorityUnitAccess().getListOfListsAssignment_3_1()); 
-            // InternalHenshin_text.g:7572:2: ( rule__PriorityUnit__ListOfListsAssignment_3_1 )
-            // InternalHenshin_text.g:7572:3: rule__PriorityUnit__ListOfListsAssignment_3_1
+            // InternalHenshin_text.g:7621:2: ( rule__PriorityUnit__ListOfListsAssignment_3_1 )
+            // InternalHenshin_text.g:7621:3: rule__PriorityUnit__ListOfListsAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__PriorityUnit__ListOfListsAssignment_3_1();
@@ -23744,16 +23934,16 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__0"
-    // InternalHenshin_text.g:7581:1: rule__IteratedUnit__Group__0 : rule__IteratedUnit__Group__0__Impl rule__IteratedUnit__Group__1 ;
+    // InternalHenshin_text.g:7630:1: rule__IteratedUnit__Group__0 : rule__IteratedUnit__Group__0__Impl rule__IteratedUnit__Group__1 ;
     public final void rule__IteratedUnit__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7585:1: ( rule__IteratedUnit__Group__0__Impl rule__IteratedUnit__Group__1 )
-            // InternalHenshin_text.g:7586:2: rule__IteratedUnit__Group__0__Impl rule__IteratedUnit__Group__1
+            // InternalHenshin_text.g:7634:1: ( rule__IteratedUnit__Group__0__Impl rule__IteratedUnit__Group__1 )
+            // InternalHenshin_text.g:7635:2: rule__IteratedUnit__Group__0__Impl rule__IteratedUnit__Group__1
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_50);
             rule__IteratedUnit__Group__0__Impl();
 
             state._fsp--;
@@ -23782,21 +23972,21 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__0__Impl"
-    // InternalHenshin_text.g:7593:1: rule__IteratedUnit__Group__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:7642:1: rule__IteratedUnit__Group__0__Impl : ( () ) ;
     public final void rule__IteratedUnit__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7597:1: ( ( () ) )
-            // InternalHenshin_text.g:7598:1: ( () )
+            // InternalHenshin_text.g:7646:1: ( ( () ) )
+            // InternalHenshin_text.g:7647:1: ( () )
             {
-            // InternalHenshin_text.g:7598:1: ( () )
-            // InternalHenshin_text.g:7599:2: ()
+            // InternalHenshin_text.g:7647:1: ( () )
+            // InternalHenshin_text.g:7648:2: ()
             {
              before(grammarAccess.getIteratedUnitAccess().getIteratedUnitAction_0()); 
-            // InternalHenshin_text.g:7600:2: ()
-            // InternalHenshin_text.g:7600:3: 
+            // InternalHenshin_text.g:7649:2: ()
+            // InternalHenshin_text.g:7649:3: 
             {
             }
 
@@ -23819,14 +24009,14 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__1"
-    // InternalHenshin_text.g:7608:1: rule__IteratedUnit__Group__1 : rule__IteratedUnit__Group__1__Impl rule__IteratedUnit__Group__2 ;
+    // InternalHenshin_text.g:7657:1: rule__IteratedUnit__Group__1 : rule__IteratedUnit__Group__1__Impl rule__IteratedUnit__Group__2 ;
     public final void rule__IteratedUnit__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7612:1: ( rule__IteratedUnit__Group__1__Impl rule__IteratedUnit__Group__2 )
-            // InternalHenshin_text.g:7613:2: rule__IteratedUnit__Group__1__Impl rule__IteratedUnit__Group__2
+            // InternalHenshin_text.g:7661:1: ( rule__IteratedUnit__Group__1__Impl rule__IteratedUnit__Group__2 )
+            // InternalHenshin_text.g:7662:2: rule__IteratedUnit__Group__1__Impl rule__IteratedUnit__Group__2
             {
             pushFollow(FOLLOW_10);
             rule__IteratedUnit__Group__1__Impl();
@@ -23857,20 +24047,20 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__1__Impl"
-    // InternalHenshin_text.g:7620:1: rule__IteratedUnit__Group__1__Impl : ( 'for' ) ;
+    // InternalHenshin_text.g:7669:1: rule__IteratedUnit__Group__1__Impl : ( 'for' ) ;
     public final void rule__IteratedUnit__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7624:1: ( ( 'for' ) )
-            // InternalHenshin_text.g:7625:1: ( 'for' )
+            // InternalHenshin_text.g:7673:1: ( ( 'for' ) )
+            // InternalHenshin_text.g:7674:1: ( 'for' )
             {
-            // InternalHenshin_text.g:7625:1: ( 'for' )
-            // InternalHenshin_text.g:7626:2: 'for'
+            // InternalHenshin_text.g:7674:1: ( 'for' )
+            // InternalHenshin_text.g:7675:2: 'for'
             {
              before(grammarAccess.getIteratedUnitAccess().getForKeyword_1()); 
-            match(input,98,FOLLOW_2); 
+            match(input,102,FOLLOW_2); 
              after(grammarAccess.getIteratedUnitAccess().getForKeyword_1()); 
 
             }
@@ -23894,16 +24084,16 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__2"
-    // InternalHenshin_text.g:7635:1: rule__IteratedUnit__Group__2 : rule__IteratedUnit__Group__2__Impl rule__IteratedUnit__Group__3 ;
+    // InternalHenshin_text.g:7684:1: rule__IteratedUnit__Group__2 : rule__IteratedUnit__Group__2__Impl rule__IteratedUnit__Group__3 ;
     public final void rule__IteratedUnit__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7639:1: ( rule__IteratedUnit__Group__2__Impl rule__IteratedUnit__Group__3 )
-            // InternalHenshin_text.g:7640:2: rule__IteratedUnit__Group__2__Impl rule__IteratedUnit__Group__3
+            // InternalHenshin_text.g:7688:1: ( rule__IteratedUnit__Group__2__Impl rule__IteratedUnit__Group__3 )
+            // InternalHenshin_text.g:7689:2: rule__IteratedUnit__Group__2__Impl rule__IteratedUnit__Group__3
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__IteratedUnit__Group__2__Impl();
 
             state._fsp--;
@@ -23932,20 +24122,20 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__2__Impl"
-    // InternalHenshin_text.g:7647:1: rule__IteratedUnit__Group__2__Impl : ( '(' ) ;
+    // InternalHenshin_text.g:7696:1: rule__IteratedUnit__Group__2__Impl : ( '(' ) ;
     public final void rule__IteratedUnit__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7651:1: ( ( '(' ) )
-            // InternalHenshin_text.g:7652:1: ( '(' )
+            // InternalHenshin_text.g:7700:1: ( ( '(' ) )
+            // InternalHenshin_text.g:7701:1: ( '(' )
             {
-            // InternalHenshin_text.g:7652:1: ( '(' )
-            // InternalHenshin_text.g:7653:2: '('
+            // InternalHenshin_text.g:7701:1: ( '(' )
+            // InternalHenshin_text.g:7702:2: '('
             {
              before(grammarAccess.getIteratedUnitAccess().getLeftParenthesisKeyword_2()); 
-            match(input,66,FOLLOW_2); 
+            match(input,70,FOLLOW_2); 
              after(grammarAccess.getIteratedUnitAccess().getLeftParenthesisKeyword_2()); 
 
             }
@@ -23969,16 +24159,16 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__3"
-    // InternalHenshin_text.g:7662:1: rule__IteratedUnit__Group__3 : rule__IteratedUnit__Group__3__Impl rule__IteratedUnit__Group__4 ;
+    // InternalHenshin_text.g:7711:1: rule__IteratedUnit__Group__3 : rule__IteratedUnit__Group__3__Impl rule__IteratedUnit__Group__4 ;
     public final void rule__IteratedUnit__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7666:1: ( rule__IteratedUnit__Group__3__Impl rule__IteratedUnit__Group__4 )
-            // InternalHenshin_text.g:7667:2: rule__IteratedUnit__Group__3__Impl rule__IteratedUnit__Group__4
+            // InternalHenshin_text.g:7715:1: ( rule__IteratedUnit__Group__3__Impl rule__IteratedUnit__Group__4 )
+            // InternalHenshin_text.g:7716:2: rule__IteratedUnit__Group__3__Impl rule__IteratedUnit__Group__4
             {
-            pushFollow(FOLLOW_28);
+            pushFollow(FOLLOW_29);
             rule__IteratedUnit__Group__3__Impl();
 
             state._fsp--;
@@ -24007,21 +24197,21 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__3__Impl"
-    // InternalHenshin_text.g:7674:1: rule__IteratedUnit__Group__3__Impl : ( ( rule__IteratedUnit__IterationsAssignment_3 ) ) ;
+    // InternalHenshin_text.g:7723:1: rule__IteratedUnit__Group__3__Impl : ( ( rule__IteratedUnit__IterationsAssignment_3 ) ) ;
     public final void rule__IteratedUnit__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7678:1: ( ( ( rule__IteratedUnit__IterationsAssignment_3 ) ) )
-            // InternalHenshin_text.g:7679:1: ( ( rule__IteratedUnit__IterationsAssignment_3 ) )
+            // InternalHenshin_text.g:7727:1: ( ( ( rule__IteratedUnit__IterationsAssignment_3 ) ) )
+            // InternalHenshin_text.g:7728:1: ( ( rule__IteratedUnit__IterationsAssignment_3 ) )
             {
-            // InternalHenshin_text.g:7679:1: ( ( rule__IteratedUnit__IterationsAssignment_3 ) )
-            // InternalHenshin_text.g:7680:2: ( rule__IteratedUnit__IterationsAssignment_3 )
+            // InternalHenshin_text.g:7728:1: ( ( rule__IteratedUnit__IterationsAssignment_3 ) )
+            // InternalHenshin_text.g:7729:2: ( rule__IteratedUnit__IterationsAssignment_3 )
             {
              before(grammarAccess.getIteratedUnitAccess().getIterationsAssignment_3()); 
-            // InternalHenshin_text.g:7681:2: ( rule__IteratedUnit__IterationsAssignment_3 )
-            // InternalHenshin_text.g:7681:3: rule__IteratedUnit__IterationsAssignment_3
+            // InternalHenshin_text.g:7730:2: ( rule__IteratedUnit__IterationsAssignment_3 )
+            // InternalHenshin_text.g:7730:3: rule__IteratedUnit__IterationsAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__IteratedUnit__IterationsAssignment_3();
@@ -24054,14 +24244,14 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__4"
-    // InternalHenshin_text.g:7689:1: rule__IteratedUnit__Group__4 : rule__IteratedUnit__Group__4__Impl rule__IteratedUnit__Group__5 ;
+    // InternalHenshin_text.g:7738:1: rule__IteratedUnit__Group__4 : rule__IteratedUnit__Group__4__Impl rule__IteratedUnit__Group__5 ;
     public final void rule__IteratedUnit__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7693:1: ( rule__IteratedUnit__Group__4__Impl rule__IteratedUnit__Group__5 )
-            // InternalHenshin_text.g:7694:2: rule__IteratedUnit__Group__4__Impl rule__IteratedUnit__Group__5
+            // InternalHenshin_text.g:7742:1: ( rule__IteratedUnit__Group__4__Impl rule__IteratedUnit__Group__5 )
+            // InternalHenshin_text.g:7743:2: rule__IteratedUnit__Group__4__Impl rule__IteratedUnit__Group__5
             {
             pushFollow(FOLLOW_12);
             rule__IteratedUnit__Group__4__Impl();
@@ -24092,20 +24282,20 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__4__Impl"
-    // InternalHenshin_text.g:7701:1: rule__IteratedUnit__Group__4__Impl : ( ')' ) ;
+    // InternalHenshin_text.g:7750:1: rule__IteratedUnit__Group__4__Impl : ( ')' ) ;
     public final void rule__IteratedUnit__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7705:1: ( ( ')' ) )
-            // InternalHenshin_text.g:7706:1: ( ')' )
+            // InternalHenshin_text.g:7754:1: ( ( ')' ) )
+            // InternalHenshin_text.g:7755:1: ( ')' )
             {
-            // InternalHenshin_text.g:7706:1: ( ')' )
-            // InternalHenshin_text.g:7707:2: ')'
+            // InternalHenshin_text.g:7755:1: ( ')' )
+            // InternalHenshin_text.g:7756:2: ')'
             {
              before(grammarAccess.getIteratedUnitAccess().getRightParenthesisKeyword_4()); 
-            match(input,67,FOLLOW_2); 
+            match(input,71,FOLLOW_2); 
              after(grammarAccess.getIteratedUnitAccess().getRightParenthesisKeyword_4()); 
 
             }
@@ -24129,16 +24319,16 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__5"
-    // InternalHenshin_text.g:7716:1: rule__IteratedUnit__Group__5 : rule__IteratedUnit__Group__5__Impl rule__IteratedUnit__Group__6 ;
+    // InternalHenshin_text.g:7765:1: rule__IteratedUnit__Group__5 : rule__IteratedUnit__Group__5__Impl rule__IteratedUnit__Group__6 ;
     public final void rule__IteratedUnit__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7720:1: ( rule__IteratedUnit__Group__5__Impl rule__IteratedUnit__Group__6 )
-            // InternalHenshin_text.g:7721:2: rule__IteratedUnit__Group__5__Impl rule__IteratedUnit__Group__6
+            // InternalHenshin_text.g:7769:1: ( rule__IteratedUnit__Group__5__Impl rule__IteratedUnit__Group__6 )
+            // InternalHenshin_text.g:7770:2: rule__IteratedUnit__Group__5__Impl rule__IteratedUnit__Group__6
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__IteratedUnit__Group__5__Impl();
 
             state._fsp--;
@@ -24167,20 +24357,20 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__5__Impl"
-    // InternalHenshin_text.g:7728:1: rule__IteratedUnit__Group__5__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:7777:1: rule__IteratedUnit__Group__5__Impl : ( '{' ) ;
     public final void rule__IteratedUnit__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7732:1: ( ( '{' ) )
-            // InternalHenshin_text.g:7733:1: ( '{' )
+            // InternalHenshin_text.g:7781:1: ( ( '{' ) )
+            // InternalHenshin_text.g:7782:1: ( '{' )
             {
-            // InternalHenshin_text.g:7733:1: ( '{' )
-            // InternalHenshin_text.g:7734:2: '{'
+            // InternalHenshin_text.g:7782:1: ( '{' )
+            // InternalHenshin_text.g:7783:2: '{'
             {
              before(grammarAccess.getIteratedUnitAccess().getLeftCurlyBracketKeyword_5()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getIteratedUnitAccess().getLeftCurlyBracketKeyword_5()); 
 
             }
@@ -24204,14 +24394,14 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__6"
-    // InternalHenshin_text.g:7743:1: rule__IteratedUnit__Group__6 : rule__IteratedUnit__Group__6__Impl rule__IteratedUnit__Group__7 ;
+    // InternalHenshin_text.g:7792:1: rule__IteratedUnit__Group__6 : rule__IteratedUnit__Group__6__Impl rule__IteratedUnit__Group__7 ;
     public final void rule__IteratedUnit__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7747:1: ( rule__IteratedUnit__Group__6__Impl rule__IteratedUnit__Group__7 )
-            // InternalHenshin_text.g:7748:2: rule__IteratedUnit__Group__6__Impl rule__IteratedUnit__Group__7
+            // InternalHenshin_text.g:7796:1: ( rule__IteratedUnit__Group__6__Impl rule__IteratedUnit__Group__7 )
+            // InternalHenshin_text.g:7797:2: rule__IteratedUnit__Group__6__Impl rule__IteratedUnit__Group__7
             {
             pushFollow(FOLLOW_14);
             rule__IteratedUnit__Group__6__Impl();
@@ -24242,24 +24432,24 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__6__Impl"
-    // InternalHenshin_text.g:7755:1: rule__IteratedUnit__Group__6__Impl : ( ( ( rule__IteratedUnit__SubElementAssignment_6 ) ) ( ( rule__IteratedUnit__SubElementAssignment_6 )* ) ) ;
+    // InternalHenshin_text.g:7804:1: rule__IteratedUnit__Group__6__Impl : ( ( ( rule__IteratedUnit__SubElementAssignment_6 ) ) ( ( rule__IteratedUnit__SubElementAssignment_6 )* ) ) ;
     public final void rule__IteratedUnit__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7759:1: ( ( ( ( rule__IteratedUnit__SubElementAssignment_6 ) ) ( ( rule__IteratedUnit__SubElementAssignment_6 )* ) ) )
-            // InternalHenshin_text.g:7760:1: ( ( ( rule__IteratedUnit__SubElementAssignment_6 ) ) ( ( rule__IteratedUnit__SubElementAssignment_6 )* ) )
+            // InternalHenshin_text.g:7808:1: ( ( ( ( rule__IteratedUnit__SubElementAssignment_6 ) ) ( ( rule__IteratedUnit__SubElementAssignment_6 )* ) ) )
+            // InternalHenshin_text.g:7809:1: ( ( ( rule__IteratedUnit__SubElementAssignment_6 ) ) ( ( rule__IteratedUnit__SubElementAssignment_6 )* ) )
             {
-            // InternalHenshin_text.g:7760:1: ( ( ( rule__IteratedUnit__SubElementAssignment_6 ) ) ( ( rule__IteratedUnit__SubElementAssignment_6 )* ) )
-            // InternalHenshin_text.g:7761:2: ( ( rule__IteratedUnit__SubElementAssignment_6 ) ) ( ( rule__IteratedUnit__SubElementAssignment_6 )* )
+            // InternalHenshin_text.g:7809:1: ( ( ( rule__IteratedUnit__SubElementAssignment_6 ) ) ( ( rule__IteratedUnit__SubElementAssignment_6 )* ) )
+            // InternalHenshin_text.g:7810:2: ( ( rule__IteratedUnit__SubElementAssignment_6 ) ) ( ( rule__IteratedUnit__SubElementAssignment_6 )* )
             {
-            // InternalHenshin_text.g:7761:2: ( ( rule__IteratedUnit__SubElementAssignment_6 ) )
-            // InternalHenshin_text.g:7762:3: ( rule__IteratedUnit__SubElementAssignment_6 )
+            // InternalHenshin_text.g:7810:2: ( ( rule__IteratedUnit__SubElementAssignment_6 ) )
+            // InternalHenshin_text.g:7811:3: ( rule__IteratedUnit__SubElementAssignment_6 )
             {
              before(grammarAccess.getIteratedUnitAccess().getSubElementAssignment_6()); 
-            // InternalHenshin_text.g:7763:3: ( rule__IteratedUnit__SubElementAssignment_6 )
-            // InternalHenshin_text.g:7763:4: rule__IteratedUnit__SubElementAssignment_6
+            // InternalHenshin_text.g:7812:3: ( rule__IteratedUnit__SubElementAssignment_6 )
+            // InternalHenshin_text.g:7812:4: rule__IteratedUnit__SubElementAssignment_6
             {
             pushFollow(FOLLOW_3);
             rule__IteratedUnit__SubElementAssignment_6();
@@ -24273,24 +24463,24 @@
 
             }
 
-            // InternalHenshin_text.g:7766:2: ( ( rule__IteratedUnit__SubElementAssignment_6 )* )
-            // InternalHenshin_text.g:7767:3: ( rule__IteratedUnit__SubElementAssignment_6 )*
+            // InternalHenshin_text.g:7815:2: ( ( rule__IteratedUnit__SubElementAssignment_6 )* )
+            // InternalHenshin_text.g:7816:3: ( rule__IteratedUnit__SubElementAssignment_6 )*
             {
              before(grammarAccess.getIteratedUnitAccess().getSubElementAssignment_6()); 
-            // InternalHenshin_text.g:7768:3: ( rule__IteratedUnit__SubElementAssignment_6 )*
-            loop59:
+            // InternalHenshin_text.g:7817:3: ( rule__IteratedUnit__SubElementAssignment_6 )*
+            loop60:
             do {
-                int alt59=2;
-                int LA59_0 = input.LA(1);
+                int alt60=2;
+                int LA60_0 = input.LA(1);
 
-                if ( (LA59_0==RULE_ID||LA59_0==68||(LA59_0>=91 && LA59_0<=94)||(LA59_0>=97 && LA59_0<=99)) ) {
-                    alt59=1;
+                if ( (LA60_0==RULE_ID||LA60_0==72||(LA60_0>=95 && LA60_0<=98)||(LA60_0>=101 && LA60_0<=103)) ) {
+                    alt60=1;
                 }
 
 
-                switch (alt59) {
+                switch (alt60) {
             	case 1 :
-            	    // InternalHenshin_text.g:7768:4: rule__IteratedUnit__SubElementAssignment_6
+            	    // InternalHenshin_text.g:7817:4: rule__IteratedUnit__SubElementAssignment_6
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__IteratedUnit__SubElementAssignment_6();
@@ -24302,7 +24492,7 @@
             	    break;
 
             	default :
-            	    break loop59;
+            	    break loop60;
                 }
             } while (true);
 
@@ -24332,14 +24522,14 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__7"
-    // InternalHenshin_text.g:7777:1: rule__IteratedUnit__Group__7 : rule__IteratedUnit__Group__7__Impl ;
+    // InternalHenshin_text.g:7826:1: rule__IteratedUnit__Group__7 : rule__IteratedUnit__Group__7__Impl ;
     public final void rule__IteratedUnit__Group__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7781:1: ( rule__IteratedUnit__Group__7__Impl )
-            // InternalHenshin_text.g:7782:2: rule__IteratedUnit__Group__7__Impl
+            // InternalHenshin_text.g:7830:1: ( rule__IteratedUnit__Group__7__Impl )
+            // InternalHenshin_text.g:7831:2: rule__IteratedUnit__Group__7__Impl
             {
             pushFollow(FOLLOW_2);
             rule__IteratedUnit__Group__7__Impl();
@@ -24365,20 +24555,20 @@
 
 
     // $ANTLR start "rule__IteratedUnit__Group__7__Impl"
-    // InternalHenshin_text.g:7788:1: rule__IteratedUnit__Group__7__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:7837:1: rule__IteratedUnit__Group__7__Impl : ( '}' ) ;
     public final void rule__IteratedUnit__Group__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7792:1: ( ( '}' ) )
-            // InternalHenshin_text.g:7793:1: ( '}' )
+            // InternalHenshin_text.g:7841:1: ( ( '}' ) )
+            // InternalHenshin_text.g:7842:1: ( '}' )
             {
-            // InternalHenshin_text.g:7793:1: ( '}' )
-            // InternalHenshin_text.g:7794:2: '}'
+            // InternalHenshin_text.g:7842:1: ( '}' )
+            // InternalHenshin_text.g:7843:2: '}'
             {
              before(grammarAccess.getIteratedUnitAccess().getRightCurlyBracketKeyword_7()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getIteratedUnitAccess().getRightCurlyBracketKeyword_7()); 
 
             }
@@ -24402,14 +24592,14 @@
 
 
     // $ANTLR start "rule__LoopUnit__Group__0"
-    // InternalHenshin_text.g:7804:1: rule__LoopUnit__Group__0 : rule__LoopUnit__Group__0__Impl rule__LoopUnit__Group__1 ;
+    // InternalHenshin_text.g:7853:1: rule__LoopUnit__Group__0 : rule__LoopUnit__Group__0__Impl rule__LoopUnit__Group__1 ;
     public final void rule__LoopUnit__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7808:1: ( rule__LoopUnit__Group__0__Impl rule__LoopUnit__Group__1 )
-            // InternalHenshin_text.g:7809:2: rule__LoopUnit__Group__0__Impl rule__LoopUnit__Group__1
+            // InternalHenshin_text.g:7857:1: ( rule__LoopUnit__Group__0__Impl rule__LoopUnit__Group__1 )
+            // InternalHenshin_text.g:7858:2: rule__LoopUnit__Group__0__Impl rule__LoopUnit__Group__1
             {
             pushFollow(FOLLOW_12);
             rule__LoopUnit__Group__0__Impl();
@@ -24440,20 +24630,20 @@
 
 
     // $ANTLR start "rule__LoopUnit__Group__0__Impl"
-    // InternalHenshin_text.g:7816:1: rule__LoopUnit__Group__0__Impl : ( 'while' ) ;
+    // InternalHenshin_text.g:7865:1: rule__LoopUnit__Group__0__Impl : ( 'while' ) ;
     public final void rule__LoopUnit__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7820:1: ( ( 'while' ) )
-            // InternalHenshin_text.g:7821:1: ( 'while' )
+            // InternalHenshin_text.g:7869:1: ( ( 'while' ) )
+            // InternalHenshin_text.g:7870:1: ( 'while' )
             {
-            // InternalHenshin_text.g:7821:1: ( 'while' )
-            // InternalHenshin_text.g:7822:2: 'while'
+            // InternalHenshin_text.g:7870:1: ( 'while' )
+            // InternalHenshin_text.g:7871:2: 'while'
             {
              before(grammarAccess.getLoopUnitAccess().getWhileKeyword_0()); 
-            match(input,99,FOLLOW_2); 
+            match(input,103,FOLLOW_2); 
              after(grammarAccess.getLoopUnitAccess().getWhileKeyword_0()); 
 
             }
@@ -24477,16 +24667,16 @@
 
 
     // $ANTLR start "rule__LoopUnit__Group__1"
-    // InternalHenshin_text.g:7831:1: rule__LoopUnit__Group__1 : rule__LoopUnit__Group__1__Impl rule__LoopUnit__Group__2 ;
+    // InternalHenshin_text.g:7880:1: rule__LoopUnit__Group__1 : rule__LoopUnit__Group__1__Impl rule__LoopUnit__Group__2 ;
     public final void rule__LoopUnit__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7835:1: ( rule__LoopUnit__Group__1__Impl rule__LoopUnit__Group__2 )
-            // InternalHenshin_text.g:7836:2: rule__LoopUnit__Group__1__Impl rule__LoopUnit__Group__2
+            // InternalHenshin_text.g:7884:1: ( rule__LoopUnit__Group__1__Impl rule__LoopUnit__Group__2 )
+            // InternalHenshin_text.g:7885:2: rule__LoopUnit__Group__1__Impl rule__LoopUnit__Group__2
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             rule__LoopUnit__Group__1__Impl();
 
             state._fsp--;
@@ -24515,20 +24705,20 @@
 
 
     // $ANTLR start "rule__LoopUnit__Group__1__Impl"
-    // InternalHenshin_text.g:7843:1: rule__LoopUnit__Group__1__Impl : ( '{' ) ;
+    // InternalHenshin_text.g:7892:1: rule__LoopUnit__Group__1__Impl : ( '{' ) ;
     public final void rule__LoopUnit__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7847:1: ( ( '{' ) )
-            // InternalHenshin_text.g:7848:1: ( '{' )
+            // InternalHenshin_text.g:7896:1: ( ( '{' ) )
+            // InternalHenshin_text.g:7897:1: ( '{' )
             {
-            // InternalHenshin_text.g:7848:1: ( '{' )
-            // InternalHenshin_text.g:7849:2: '{'
+            // InternalHenshin_text.g:7897:1: ( '{' )
+            // InternalHenshin_text.g:7898:2: '{'
             {
              before(grammarAccess.getLoopUnitAccess().getLeftCurlyBracketKeyword_1()); 
-            match(input,68,FOLLOW_2); 
+            match(input,72,FOLLOW_2); 
              after(grammarAccess.getLoopUnitAccess().getLeftCurlyBracketKeyword_1()); 
 
             }
@@ -24552,14 +24742,14 @@
 
 
     // $ANTLR start "rule__LoopUnit__Group__2"
-    // InternalHenshin_text.g:7858:1: rule__LoopUnit__Group__2 : rule__LoopUnit__Group__2__Impl rule__LoopUnit__Group__3 ;
+    // InternalHenshin_text.g:7907:1: rule__LoopUnit__Group__2 : rule__LoopUnit__Group__2__Impl rule__LoopUnit__Group__3 ;
     public final void rule__LoopUnit__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7862:1: ( rule__LoopUnit__Group__2__Impl rule__LoopUnit__Group__3 )
-            // InternalHenshin_text.g:7863:2: rule__LoopUnit__Group__2__Impl rule__LoopUnit__Group__3
+            // InternalHenshin_text.g:7911:1: ( rule__LoopUnit__Group__2__Impl rule__LoopUnit__Group__3 )
+            // InternalHenshin_text.g:7912:2: rule__LoopUnit__Group__2__Impl rule__LoopUnit__Group__3
             {
             pushFollow(FOLLOW_14);
             rule__LoopUnit__Group__2__Impl();
@@ -24590,24 +24780,24 @@
 
 
     // $ANTLR start "rule__LoopUnit__Group__2__Impl"
-    // InternalHenshin_text.g:7870:1: rule__LoopUnit__Group__2__Impl : ( ( ( rule__LoopUnit__SubElementAssignment_2 ) ) ( ( rule__LoopUnit__SubElementAssignment_2 )* ) ) ;
+    // InternalHenshin_text.g:7919:1: rule__LoopUnit__Group__2__Impl : ( ( ( rule__LoopUnit__SubElementAssignment_2 ) ) ( ( rule__LoopUnit__SubElementAssignment_2 )* ) ) ;
     public final void rule__LoopUnit__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7874:1: ( ( ( ( rule__LoopUnit__SubElementAssignment_2 ) ) ( ( rule__LoopUnit__SubElementAssignment_2 )* ) ) )
-            // InternalHenshin_text.g:7875:1: ( ( ( rule__LoopUnit__SubElementAssignment_2 ) ) ( ( rule__LoopUnit__SubElementAssignment_2 )* ) )
+            // InternalHenshin_text.g:7923:1: ( ( ( ( rule__LoopUnit__SubElementAssignment_2 ) ) ( ( rule__LoopUnit__SubElementAssignment_2 )* ) ) )
+            // InternalHenshin_text.g:7924:1: ( ( ( rule__LoopUnit__SubElementAssignment_2 ) ) ( ( rule__LoopUnit__SubElementAssignment_2 )* ) )
             {
-            // InternalHenshin_text.g:7875:1: ( ( ( rule__LoopUnit__SubElementAssignment_2 ) ) ( ( rule__LoopUnit__SubElementAssignment_2 )* ) )
-            // InternalHenshin_text.g:7876:2: ( ( rule__LoopUnit__SubElementAssignment_2 ) ) ( ( rule__LoopUnit__SubElementAssignment_2 )* )
+            // InternalHenshin_text.g:7924:1: ( ( ( rule__LoopUnit__SubElementAssignment_2 ) ) ( ( rule__LoopUnit__SubElementAssignment_2 )* ) )
+            // InternalHenshin_text.g:7925:2: ( ( rule__LoopUnit__SubElementAssignment_2 ) ) ( ( rule__LoopUnit__SubElementAssignment_2 )* )
             {
-            // InternalHenshin_text.g:7876:2: ( ( rule__LoopUnit__SubElementAssignment_2 ) )
-            // InternalHenshin_text.g:7877:3: ( rule__LoopUnit__SubElementAssignment_2 )
+            // InternalHenshin_text.g:7925:2: ( ( rule__LoopUnit__SubElementAssignment_2 ) )
+            // InternalHenshin_text.g:7926:3: ( rule__LoopUnit__SubElementAssignment_2 )
             {
              before(grammarAccess.getLoopUnitAccess().getSubElementAssignment_2()); 
-            // InternalHenshin_text.g:7878:3: ( rule__LoopUnit__SubElementAssignment_2 )
-            // InternalHenshin_text.g:7878:4: rule__LoopUnit__SubElementAssignment_2
+            // InternalHenshin_text.g:7927:3: ( rule__LoopUnit__SubElementAssignment_2 )
+            // InternalHenshin_text.g:7927:4: rule__LoopUnit__SubElementAssignment_2
             {
             pushFollow(FOLLOW_3);
             rule__LoopUnit__SubElementAssignment_2();
@@ -24621,24 +24811,24 @@
 
             }
 
-            // InternalHenshin_text.g:7881:2: ( ( rule__LoopUnit__SubElementAssignment_2 )* )
-            // InternalHenshin_text.g:7882:3: ( rule__LoopUnit__SubElementAssignment_2 )*
+            // InternalHenshin_text.g:7930:2: ( ( rule__LoopUnit__SubElementAssignment_2 )* )
+            // InternalHenshin_text.g:7931:3: ( rule__LoopUnit__SubElementAssignment_2 )*
             {
              before(grammarAccess.getLoopUnitAccess().getSubElementAssignment_2()); 
-            // InternalHenshin_text.g:7883:3: ( rule__LoopUnit__SubElementAssignment_2 )*
-            loop60:
+            // InternalHenshin_text.g:7932:3: ( rule__LoopUnit__SubElementAssignment_2 )*
+            loop61:
             do {
-                int alt60=2;
-                int LA60_0 = input.LA(1);
+                int alt61=2;
+                int LA61_0 = input.LA(1);
 
-                if ( (LA60_0==RULE_ID||LA60_0==68||(LA60_0>=91 && LA60_0<=94)||(LA60_0>=97 && LA60_0<=99)) ) {
-                    alt60=1;
+                if ( (LA61_0==RULE_ID||LA61_0==72||(LA61_0>=95 && LA61_0<=98)||(LA61_0>=101 && LA61_0<=103)) ) {
+                    alt61=1;
                 }
 
 
-                switch (alt60) {
+                switch (alt61) {
             	case 1 :
-            	    // InternalHenshin_text.g:7883:4: rule__LoopUnit__SubElementAssignment_2
+            	    // InternalHenshin_text.g:7932:4: rule__LoopUnit__SubElementAssignment_2
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__LoopUnit__SubElementAssignment_2();
@@ -24650,7 +24840,7 @@
             	    break;
 
             	default :
-            	    break loop60;
+            	    break loop61;
                 }
             } while (true);
 
@@ -24680,14 +24870,14 @@
 
 
     // $ANTLR start "rule__LoopUnit__Group__3"
-    // InternalHenshin_text.g:7892:1: rule__LoopUnit__Group__3 : rule__LoopUnit__Group__3__Impl ;
+    // InternalHenshin_text.g:7941:1: rule__LoopUnit__Group__3 : rule__LoopUnit__Group__3__Impl ;
     public final void rule__LoopUnit__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7896:1: ( rule__LoopUnit__Group__3__Impl )
-            // InternalHenshin_text.g:7897:2: rule__LoopUnit__Group__3__Impl
+            // InternalHenshin_text.g:7945:1: ( rule__LoopUnit__Group__3__Impl )
+            // InternalHenshin_text.g:7946:2: rule__LoopUnit__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__LoopUnit__Group__3__Impl();
@@ -24713,20 +24903,20 @@
 
 
     // $ANTLR start "rule__LoopUnit__Group__3__Impl"
-    // InternalHenshin_text.g:7903:1: rule__LoopUnit__Group__3__Impl : ( '}' ) ;
+    // InternalHenshin_text.g:7952:1: rule__LoopUnit__Group__3__Impl : ( '}' ) ;
     public final void rule__LoopUnit__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7907:1: ( ( '}' ) )
-            // InternalHenshin_text.g:7908:1: ( '}' )
+            // InternalHenshin_text.g:7956:1: ( ( '}' ) )
+            // InternalHenshin_text.g:7957:1: ( '}' )
             {
-            // InternalHenshin_text.g:7908:1: ( '}' )
-            // InternalHenshin_text.g:7909:2: '}'
+            // InternalHenshin_text.g:7957:1: ( '}' )
+            // InternalHenshin_text.g:7958:2: '}'
             {
              before(grammarAccess.getLoopUnitAccess().getRightCurlyBracketKeyword_3()); 
-            match(input,69,FOLLOW_2); 
+            match(input,73,FOLLOW_2); 
              after(grammarAccess.getLoopUnitAccess().getRightCurlyBracketKeyword_3()); 
 
             }
@@ -24750,16 +24940,16 @@
 
 
     // $ANTLR start "rule__Parameter__Group__0"
-    // InternalHenshin_text.g:7919:1: rule__Parameter__Group__0 : rule__Parameter__Group__0__Impl rule__Parameter__Group__1 ;
+    // InternalHenshin_text.g:7968:1: rule__Parameter__Group__0 : rule__Parameter__Group__0__Impl rule__Parameter__Group__1 ;
     public final void rule__Parameter__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7923:1: ( rule__Parameter__Group__0__Impl rule__Parameter__Group__1 )
-            // InternalHenshin_text.g:7924:2: rule__Parameter__Group__0__Impl rule__Parameter__Group__1
+            // InternalHenshin_text.g:7972:1: ( rule__Parameter__Group__0__Impl rule__Parameter__Group__1 )
+            // InternalHenshin_text.g:7973:2: rule__Parameter__Group__0__Impl rule__Parameter__Group__1
             {
-            pushFollow(FOLLOW_27);
+            pushFollow(FOLLOW_18);
             rule__Parameter__Group__0__Impl();
 
             state._fsp--;
@@ -24788,31 +24978,42 @@
 
 
     // $ANTLR start "rule__Parameter__Group__0__Impl"
-    // InternalHenshin_text.g:7931:1: rule__Parameter__Group__0__Impl : ( ( rule__Parameter__NameAssignment_0 ) ) ;
+    // InternalHenshin_text.g:7980:1: rule__Parameter__Group__0__Impl : ( ( rule__Parameter__KindAssignment_0 )? ) ;
     public final void rule__Parameter__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7935:1: ( ( ( rule__Parameter__NameAssignment_0 ) ) )
-            // InternalHenshin_text.g:7936:1: ( ( rule__Parameter__NameAssignment_0 ) )
+            // InternalHenshin_text.g:7984:1: ( ( ( rule__Parameter__KindAssignment_0 )? ) )
+            // InternalHenshin_text.g:7985:1: ( ( rule__Parameter__KindAssignment_0 )? )
             {
-            // InternalHenshin_text.g:7936:1: ( ( rule__Parameter__NameAssignment_0 ) )
-            // InternalHenshin_text.g:7937:2: ( rule__Parameter__NameAssignment_0 )
+            // InternalHenshin_text.g:7985:1: ( ( rule__Parameter__KindAssignment_0 )? )
+            // InternalHenshin_text.g:7986:2: ( rule__Parameter__KindAssignment_0 )?
             {
-             before(grammarAccess.getParameterAccess().getNameAssignment_0()); 
-            // InternalHenshin_text.g:7938:2: ( rule__Parameter__NameAssignment_0 )
-            // InternalHenshin_text.g:7938:3: rule__Parameter__NameAssignment_0
-            {
-            pushFollow(FOLLOW_2);
-            rule__Parameter__NameAssignment_0();
+             before(grammarAccess.getParameterAccess().getKindAssignment_0()); 
+            // InternalHenshin_text.g:7987:2: ( rule__Parameter__KindAssignment_0 )?
+            int alt62=2;
+            int LA62_0 = input.LA(1);
 
-            state._fsp--;
+            if ( ((LA62_0>=30 && LA62_0<=33)) ) {
+                alt62=1;
+            }
+            switch (alt62) {
+                case 1 :
+                    // InternalHenshin_text.g:7987:3: rule__Parameter__KindAssignment_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Parameter__KindAssignment_0();
 
+                    state._fsp--;
+
+
+                    }
+                    break;
 
             }
 
-             after(grammarAccess.getParameterAccess().getNameAssignment_0()); 
+             after(grammarAccess.getParameterAccess().getKindAssignment_0()); 
 
             }
 
@@ -24835,16 +25036,16 @@
 
 
     // $ANTLR start "rule__Parameter__Group__1"
-    // InternalHenshin_text.g:7946:1: rule__Parameter__Group__1 : rule__Parameter__Group__1__Impl rule__Parameter__Group__2 ;
+    // InternalHenshin_text.g:7995:1: rule__Parameter__Group__1 : rule__Parameter__Group__1__Impl rule__Parameter__Group__2 ;
     public final void rule__Parameter__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7950:1: ( rule__Parameter__Group__1__Impl rule__Parameter__Group__2 )
-            // InternalHenshin_text.g:7951:2: rule__Parameter__Group__1__Impl rule__Parameter__Group__2
+            // InternalHenshin_text.g:7999:1: ( rule__Parameter__Group__1__Impl rule__Parameter__Group__2 )
+            // InternalHenshin_text.g:8000:2: rule__Parameter__Group__1__Impl rule__Parameter__Group__2
             {
-            pushFollow(FOLLOW_49);
+            pushFollow(FOLLOW_28);
             rule__Parameter__Group__1__Impl();
 
             state._fsp--;
@@ -24873,21 +25074,31 @@
 
 
     // $ANTLR start "rule__Parameter__Group__1__Impl"
-    // InternalHenshin_text.g:7958:1: rule__Parameter__Group__1__Impl : ( ':' ) ;
+    // InternalHenshin_text.g:8007:1: rule__Parameter__Group__1__Impl : ( ( rule__Parameter__NameAssignment_1 ) ) ;
     public final void rule__Parameter__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7962:1: ( ( ':' ) )
-            // InternalHenshin_text.g:7963:1: ( ':' )
+            // InternalHenshin_text.g:8011:1: ( ( ( rule__Parameter__NameAssignment_1 ) ) )
+            // InternalHenshin_text.g:8012:1: ( ( rule__Parameter__NameAssignment_1 ) )
             {
-            // InternalHenshin_text.g:7963:1: ( ':' )
-            // InternalHenshin_text.g:7964:2: ':'
+            // InternalHenshin_text.g:8012:1: ( ( rule__Parameter__NameAssignment_1 ) )
+            // InternalHenshin_text.g:8013:2: ( rule__Parameter__NameAssignment_1 )
             {
-             before(grammarAccess.getParameterAccess().getColonKeyword_1()); 
-            match(input,81,FOLLOW_2); 
-             after(grammarAccess.getParameterAccess().getColonKeyword_1()); 
+             before(grammarAccess.getParameterAccess().getNameAssignment_1()); 
+            // InternalHenshin_text.g:8014:2: ( rule__Parameter__NameAssignment_1 )
+            // InternalHenshin_text.g:8014:3: rule__Parameter__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Parameter__NameAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getParameterAccess().getNameAssignment_1()); 
 
             }
 
@@ -24910,20 +25121,25 @@
 
 
     // $ANTLR start "rule__Parameter__Group__2"
-    // InternalHenshin_text.g:7973:1: rule__Parameter__Group__2 : rule__Parameter__Group__2__Impl ;
+    // InternalHenshin_text.g:8022:1: rule__Parameter__Group__2 : rule__Parameter__Group__2__Impl rule__Parameter__Group__3 ;
     public final void rule__Parameter__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7977:1: ( rule__Parameter__Group__2__Impl )
-            // InternalHenshin_text.g:7978:2: rule__Parameter__Group__2__Impl
+            // InternalHenshin_text.g:8026:1: ( rule__Parameter__Group__2__Impl rule__Parameter__Group__3 )
+            // InternalHenshin_text.g:8027:2: rule__Parameter__Group__2__Impl rule__Parameter__Group__3
             {
-            pushFollow(FOLLOW_2);
+            pushFollow(FOLLOW_51);
             rule__Parameter__Group__2__Impl();
 
             state._fsp--;
 
+            pushFollow(FOLLOW_2);
+            rule__Parameter__Group__3();
+
+            state._fsp--;
+
 
             }
 
@@ -24943,31 +25159,21 @@
 
 
     // $ANTLR start "rule__Parameter__Group__2__Impl"
-    // InternalHenshin_text.g:7984:1: rule__Parameter__Group__2__Impl : ( ( rule__Parameter__TypeAssignment_2 ) ) ;
+    // InternalHenshin_text.g:8034:1: rule__Parameter__Group__2__Impl : ( ':' ) ;
     public final void rule__Parameter__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:7988:1: ( ( ( rule__Parameter__TypeAssignment_2 ) ) )
-            // InternalHenshin_text.g:7989:1: ( ( rule__Parameter__TypeAssignment_2 ) )
+            // InternalHenshin_text.g:8038:1: ( ( ':' ) )
+            // InternalHenshin_text.g:8039:1: ( ':' )
             {
-            // InternalHenshin_text.g:7989:1: ( ( rule__Parameter__TypeAssignment_2 ) )
-            // InternalHenshin_text.g:7990:2: ( rule__Parameter__TypeAssignment_2 )
+            // InternalHenshin_text.g:8039:1: ( ':' )
+            // InternalHenshin_text.g:8040:2: ':'
             {
-             before(grammarAccess.getParameterAccess().getTypeAssignment_2()); 
-            // InternalHenshin_text.g:7991:2: ( rule__Parameter__TypeAssignment_2 )
-            // InternalHenshin_text.g:7991:3: rule__Parameter__TypeAssignment_2
-            {
-            pushFollow(FOLLOW_2);
-            rule__Parameter__TypeAssignment_2();
-
-            state._fsp--;
-
-
-            }
-
-             after(grammarAccess.getParameterAccess().getTypeAssignment_2()); 
+             before(grammarAccess.getParameterAccess().getColonKeyword_2()); 
+            match(input,85,FOLLOW_2); 
+             after(grammarAccess.getParameterAccess().getColonKeyword_2()); 
 
             }
 
@@ -24989,17 +25195,97 @@
     // $ANTLR end "rule__Parameter__Group__2__Impl"
 
 
+    // $ANTLR start "rule__Parameter__Group__3"
+    // InternalHenshin_text.g:8049:1: rule__Parameter__Group__3 : rule__Parameter__Group__3__Impl ;
+    public final void rule__Parameter__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalHenshin_text.g:8053:1: ( rule__Parameter__Group__3__Impl )
+            // InternalHenshin_text.g:8054:2: rule__Parameter__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Parameter__Group__3__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parameter__Group__3"
+
+
+    // $ANTLR start "rule__Parameter__Group__3__Impl"
+    // InternalHenshin_text.g:8060:1: rule__Parameter__Group__3__Impl : ( ( rule__Parameter__TypeAssignment_3 ) ) ;
+    public final void rule__Parameter__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalHenshin_text.g:8064:1: ( ( ( rule__Parameter__TypeAssignment_3 ) ) )
+            // InternalHenshin_text.g:8065:1: ( ( rule__Parameter__TypeAssignment_3 ) )
+            {
+            // InternalHenshin_text.g:8065:1: ( ( rule__Parameter__TypeAssignment_3 ) )
+            // InternalHenshin_text.g:8066:2: ( rule__Parameter__TypeAssignment_3 )
+            {
+             before(grammarAccess.getParameterAccess().getTypeAssignment_3()); 
+            // InternalHenshin_text.g:8067:2: ( rule__Parameter__TypeAssignment_3 )
+            // InternalHenshin_text.g:8067:3: rule__Parameter__TypeAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__Parameter__TypeAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getParameterAccess().getTypeAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parameter__Group__3__Impl"
+
+
     // $ANTLR start "rule__OrExpression__Group__0"
-    // InternalHenshin_text.g:8000:1: rule__OrExpression__Group__0 : rule__OrExpression__Group__0__Impl rule__OrExpression__Group__1 ;
+    // InternalHenshin_text.g:8076:1: rule__OrExpression__Group__0 : rule__OrExpression__Group__0__Impl rule__OrExpression__Group__1 ;
     public final void rule__OrExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8004:1: ( rule__OrExpression__Group__0__Impl rule__OrExpression__Group__1 )
-            // InternalHenshin_text.g:8005:2: rule__OrExpression__Group__0__Impl rule__OrExpression__Group__1
+            // InternalHenshin_text.g:8080:1: ( rule__OrExpression__Group__0__Impl rule__OrExpression__Group__1 )
+            // InternalHenshin_text.g:8081:2: rule__OrExpression__Group__0__Impl rule__OrExpression__Group__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__OrExpression__Group__0__Impl();
 
             state._fsp--;
@@ -25028,17 +25314,17 @@
 
 
     // $ANTLR start "rule__OrExpression__Group__0__Impl"
-    // InternalHenshin_text.g:8012:1: rule__OrExpression__Group__0__Impl : ( ruleAndExpression ) ;
+    // InternalHenshin_text.g:8088:1: rule__OrExpression__Group__0__Impl : ( ruleAndExpression ) ;
     public final void rule__OrExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8016:1: ( ( ruleAndExpression ) )
-            // InternalHenshin_text.g:8017:1: ( ruleAndExpression )
+            // InternalHenshin_text.g:8092:1: ( ( ruleAndExpression ) )
+            // InternalHenshin_text.g:8093:1: ( ruleAndExpression )
             {
-            // InternalHenshin_text.g:8017:1: ( ruleAndExpression )
-            // InternalHenshin_text.g:8018:2: ruleAndExpression
+            // InternalHenshin_text.g:8093:1: ( ruleAndExpression )
+            // InternalHenshin_text.g:8094:2: ruleAndExpression
             {
              before(grammarAccess.getOrExpressionAccess().getAndExpressionParserRuleCall_0()); 
             pushFollow(FOLLOW_2);
@@ -25069,14 +25355,14 @@
 
 
     // $ANTLR start "rule__OrExpression__Group__1"
-    // InternalHenshin_text.g:8027:1: rule__OrExpression__Group__1 : rule__OrExpression__Group__1__Impl ;
+    // InternalHenshin_text.g:8103:1: rule__OrExpression__Group__1 : rule__OrExpression__Group__1__Impl ;
     public final void rule__OrExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8031:1: ( rule__OrExpression__Group__1__Impl )
-            // InternalHenshin_text.g:8032:2: rule__OrExpression__Group__1__Impl
+            // InternalHenshin_text.g:8107:1: ( rule__OrExpression__Group__1__Impl )
+            // InternalHenshin_text.g:8108:2: rule__OrExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OrExpression__Group__1__Impl();
@@ -25102,35 +25388,35 @@
 
 
     // $ANTLR start "rule__OrExpression__Group__1__Impl"
-    // InternalHenshin_text.g:8038:1: rule__OrExpression__Group__1__Impl : ( ( rule__OrExpression__Group_1__0 )* ) ;
+    // InternalHenshin_text.g:8114:1: rule__OrExpression__Group__1__Impl : ( ( rule__OrExpression__Group_1__0 )* ) ;
     public final void rule__OrExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8042:1: ( ( ( rule__OrExpression__Group_1__0 )* ) )
-            // InternalHenshin_text.g:8043:1: ( ( rule__OrExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8118:1: ( ( ( rule__OrExpression__Group_1__0 )* ) )
+            // InternalHenshin_text.g:8119:1: ( ( rule__OrExpression__Group_1__0 )* )
             {
-            // InternalHenshin_text.g:8043:1: ( ( rule__OrExpression__Group_1__0 )* )
-            // InternalHenshin_text.g:8044:2: ( rule__OrExpression__Group_1__0 )*
+            // InternalHenshin_text.g:8119:1: ( ( rule__OrExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8120:2: ( rule__OrExpression__Group_1__0 )*
             {
              before(grammarAccess.getOrExpressionAccess().getGroup_1()); 
-            // InternalHenshin_text.g:8045:2: ( rule__OrExpression__Group_1__0 )*
-            loop61:
+            // InternalHenshin_text.g:8121:2: ( rule__OrExpression__Group_1__0 )*
+            loop63:
             do {
-                int alt61=2;
-                int LA61_0 = input.LA(1);
+                int alt63=2;
+                int LA63_0 = input.LA(1);
 
-                if ( (LA61_0==18) ) {
-                    alt61=1;
+                if ( (LA63_0==18) ) {
+                    alt63=1;
                 }
 
 
-                switch (alt61) {
+                switch (alt63) {
             	case 1 :
-            	    // InternalHenshin_text.g:8045:3: rule__OrExpression__Group_1__0
+            	    // InternalHenshin_text.g:8121:3: rule__OrExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_53);
             	    rule__OrExpression__Group_1__0();
 
             	    state._fsp--;
@@ -25140,7 +25426,7 @@
             	    break;
 
             	default :
-            	    break loop61;
+            	    break loop63;
                 }
             } while (true);
 
@@ -25167,16 +25453,16 @@
 
 
     // $ANTLR start "rule__OrExpression__Group_1__0"
-    // InternalHenshin_text.g:8054:1: rule__OrExpression__Group_1__0 : rule__OrExpression__Group_1__0__Impl rule__OrExpression__Group_1__1 ;
+    // InternalHenshin_text.g:8130:1: rule__OrExpression__Group_1__0 : rule__OrExpression__Group_1__0__Impl rule__OrExpression__Group_1__1 ;
     public final void rule__OrExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8058:1: ( rule__OrExpression__Group_1__0__Impl rule__OrExpression__Group_1__1 )
-            // InternalHenshin_text.g:8059:2: rule__OrExpression__Group_1__0__Impl rule__OrExpression__Group_1__1
+            // InternalHenshin_text.g:8134:1: ( rule__OrExpression__Group_1__0__Impl rule__OrExpression__Group_1__1 )
+            // InternalHenshin_text.g:8135:2: rule__OrExpression__Group_1__0__Impl rule__OrExpression__Group_1__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_52);
             rule__OrExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -25205,21 +25491,21 @@
 
 
     // $ANTLR start "rule__OrExpression__Group_1__0__Impl"
-    // InternalHenshin_text.g:8066:1: rule__OrExpression__Group_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:8142:1: rule__OrExpression__Group_1__0__Impl : ( () ) ;
     public final void rule__OrExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8070:1: ( ( () ) )
-            // InternalHenshin_text.g:8071:1: ( () )
+            // InternalHenshin_text.g:8146:1: ( ( () ) )
+            // InternalHenshin_text.g:8147:1: ( () )
             {
-            // InternalHenshin_text.g:8071:1: ( () )
-            // InternalHenshin_text.g:8072:2: ()
+            // InternalHenshin_text.g:8147:1: ( () )
+            // InternalHenshin_text.g:8148:2: ()
             {
              before(grammarAccess.getOrExpressionAccess().getOrExpressionLeftAction_1_0()); 
-            // InternalHenshin_text.g:8073:2: ()
-            // InternalHenshin_text.g:8073:3: 
+            // InternalHenshin_text.g:8149:2: ()
+            // InternalHenshin_text.g:8149:3: 
             {
             }
 
@@ -25242,16 +25528,16 @@
 
 
     // $ANTLR start "rule__OrExpression__Group_1__1"
-    // InternalHenshin_text.g:8081:1: rule__OrExpression__Group_1__1 : rule__OrExpression__Group_1__1__Impl rule__OrExpression__Group_1__2 ;
+    // InternalHenshin_text.g:8157:1: rule__OrExpression__Group_1__1 : rule__OrExpression__Group_1__1__Impl rule__OrExpression__Group_1__2 ;
     public final void rule__OrExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8085:1: ( rule__OrExpression__Group_1__1__Impl rule__OrExpression__Group_1__2 )
-            // InternalHenshin_text.g:8086:2: rule__OrExpression__Group_1__1__Impl rule__OrExpression__Group_1__2
+            // InternalHenshin_text.g:8161:1: ( rule__OrExpression__Group_1__1__Impl rule__OrExpression__Group_1__2 )
+            // InternalHenshin_text.g:8162:2: rule__OrExpression__Group_1__1__Impl rule__OrExpression__Group_1__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__OrExpression__Group_1__1__Impl();
 
             state._fsp--;
@@ -25280,17 +25566,17 @@
 
 
     // $ANTLR start "rule__OrExpression__Group_1__1__Impl"
-    // InternalHenshin_text.g:8093:1: rule__OrExpression__Group_1__1__Impl : ( 'OR' ) ;
+    // InternalHenshin_text.g:8169:1: rule__OrExpression__Group_1__1__Impl : ( 'OR' ) ;
     public final void rule__OrExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8097:1: ( ( 'OR' ) )
-            // InternalHenshin_text.g:8098:1: ( 'OR' )
+            // InternalHenshin_text.g:8173:1: ( ( 'OR' ) )
+            // InternalHenshin_text.g:8174:1: ( 'OR' )
             {
-            // InternalHenshin_text.g:8098:1: ( 'OR' )
-            // InternalHenshin_text.g:8099:2: 'OR'
+            // InternalHenshin_text.g:8174:1: ( 'OR' )
+            // InternalHenshin_text.g:8175:2: 'OR'
             {
              before(grammarAccess.getOrExpressionAccess().getORKeyword_1_1()); 
             match(input,18,FOLLOW_2); 
@@ -25317,14 +25603,14 @@
 
 
     // $ANTLR start "rule__OrExpression__Group_1__2"
-    // InternalHenshin_text.g:8108:1: rule__OrExpression__Group_1__2 : rule__OrExpression__Group_1__2__Impl ;
+    // InternalHenshin_text.g:8184:1: rule__OrExpression__Group_1__2 : rule__OrExpression__Group_1__2__Impl ;
     public final void rule__OrExpression__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8112:1: ( rule__OrExpression__Group_1__2__Impl )
-            // InternalHenshin_text.g:8113:2: rule__OrExpression__Group_1__2__Impl
+            // InternalHenshin_text.g:8188:1: ( rule__OrExpression__Group_1__2__Impl )
+            // InternalHenshin_text.g:8189:2: rule__OrExpression__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OrExpression__Group_1__2__Impl();
@@ -25350,21 +25636,21 @@
 
 
     // $ANTLR start "rule__OrExpression__Group_1__2__Impl"
-    // InternalHenshin_text.g:8119:1: rule__OrExpression__Group_1__2__Impl : ( ( rule__OrExpression__RightAssignment_1_2 ) ) ;
+    // InternalHenshin_text.g:8195:1: rule__OrExpression__Group_1__2__Impl : ( ( rule__OrExpression__RightAssignment_1_2 ) ) ;
     public final void rule__OrExpression__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8123:1: ( ( ( rule__OrExpression__RightAssignment_1_2 ) ) )
-            // InternalHenshin_text.g:8124:1: ( ( rule__OrExpression__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:8199:1: ( ( ( rule__OrExpression__RightAssignment_1_2 ) ) )
+            // InternalHenshin_text.g:8200:1: ( ( rule__OrExpression__RightAssignment_1_2 ) )
             {
-            // InternalHenshin_text.g:8124:1: ( ( rule__OrExpression__RightAssignment_1_2 ) )
-            // InternalHenshin_text.g:8125:2: ( rule__OrExpression__RightAssignment_1_2 )
+            // InternalHenshin_text.g:8200:1: ( ( rule__OrExpression__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:8201:2: ( rule__OrExpression__RightAssignment_1_2 )
             {
              before(grammarAccess.getOrExpressionAccess().getRightAssignment_1_2()); 
-            // InternalHenshin_text.g:8126:2: ( rule__OrExpression__RightAssignment_1_2 )
-            // InternalHenshin_text.g:8126:3: rule__OrExpression__RightAssignment_1_2
+            // InternalHenshin_text.g:8202:2: ( rule__OrExpression__RightAssignment_1_2 )
+            // InternalHenshin_text.g:8202:3: rule__OrExpression__RightAssignment_1_2
             {
             pushFollow(FOLLOW_2);
             rule__OrExpression__RightAssignment_1_2();
@@ -25397,16 +25683,16 @@
 
 
     // $ANTLR start "rule__AndExpression__Group__0"
-    // InternalHenshin_text.g:8135:1: rule__AndExpression__Group__0 : rule__AndExpression__Group__0__Impl rule__AndExpression__Group__1 ;
+    // InternalHenshin_text.g:8211:1: rule__AndExpression__Group__0 : rule__AndExpression__Group__0__Impl rule__AndExpression__Group__1 ;
     public final void rule__AndExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8139:1: ( rule__AndExpression__Group__0__Impl rule__AndExpression__Group__1 )
-            // InternalHenshin_text.g:8140:2: rule__AndExpression__Group__0__Impl rule__AndExpression__Group__1
+            // InternalHenshin_text.g:8215:1: ( rule__AndExpression__Group__0__Impl rule__AndExpression__Group__1 )
+            // InternalHenshin_text.g:8216:2: rule__AndExpression__Group__0__Impl rule__AndExpression__Group__1
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_40);
             rule__AndExpression__Group__0__Impl();
 
             state._fsp--;
@@ -25435,17 +25721,17 @@
 
 
     // $ANTLR start "rule__AndExpression__Group__0__Impl"
-    // InternalHenshin_text.g:8147:1: rule__AndExpression__Group__0__Impl : ( ruleEqualityExpression ) ;
+    // InternalHenshin_text.g:8223:1: rule__AndExpression__Group__0__Impl : ( ruleEqualityExpression ) ;
     public final void rule__AndExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8151:1: ( ( ruleEqualityExpression ) )
-            // InternalHenshin_text.g:8152:1: ( ruleEqualityExpression )
+            // InternalHenshin_text.g:8227:1: ( ( ruleEqualityExpression ) )
+            // InternalHenshin_text.g:8228:1: ( ruleEqualityExpression )
             {
-            // InternalHenshin_text.g:8152:1: ( ruleEqualityExpression )
-            // InternalHenshin_text.g:8153:2: ruleEqualityExpression
+            // InternalHenshin_text.g:8228:1: ( ruleEqualityExpression )
+            // InternalHenshin_text.g:8229:2: ruleEqualityExpression
             {
              before(grammarAccess.getAndExpressionAccess().getEqualityExpressionParserRuleCall_0()); 
             pushFollow(FOLLOW_2);
@@ -25476,14 +25762,14 @@
 
 
     // $ANTLR start "rule__AndExpression__Group__1"
-    // InternalHenshin_text.g:8162:1: rule__AndExpression__Group__1 : rule__AndExpression__Group__1__Impl ;
+    // InternalHenshin_text.g:8238:1: rule__AndExpression__Group__1 : rule__AndExpression__Group__1__Impl ;
     public final void rule__AndExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8166:1: ( rule__AndExpression__Group__1__Impl )
-            // InternalHenshin_text.g:8167:2: rule__AndExpression__Group__1__Impl
+            // InternalHenshin_text.g:8242:1: ( rule__AndExpression__Group__1__Impl )
+            // InternalHenshin_text.g:8243:2: rule__AndExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AndExpression__Group__1__Impl();
@@ -25509,35 +25795,35 @@
 
 
     // $ANTLR start "rule__AndExpression__Group__1__Impl"
-    // InternalHenshin_text.g:8173:1: rule__AndExpression__Group__1__Impl : ( ( rule__AndExpression__Group_1__0 )* ) ;
+    // InternalHenshin_text.g:8249:1: rule__AndExpression__Group__1__Impl : ( ( rule__AndExpression__Group_1__0 )* ) ;
     public final void rule__AndExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8177:1: ( ( ( rule__AndExpression__Group_1__0 )* ) )
-            // InternalHenshin_text.g:8178:1: ( ( rule__AndExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8253:1: ( ( ( rule__AndExpression__Group_1__0 )* ) )
+            // InternalHenshin_text.g:8254:1: ( ( rule__AndExpression__Group_1__0 )* )
             {
-            // InternalHenshin_text.g:8178:1: ( ( rule__AndExpression__Group_1__0 )* )
-            // InternalHenshin_text.g:8179:2: ( rule__AndExpression__Group_1__0 )*
+            // InternalHenshin_text.g:8254:1: ( ( rule__AndExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8255:2: ( rule__AndExpression__Group_1__0 )*
             {
              before(grammarAccess.getAndExpressionAccess().getGroup_1()); 
-            // InternalHenshin_text.g:8180:2: ( rule__AndExpression__Group_1__0 )*
-            loop62:
+            // InternalHenshin_text.g:8256:2: ( rule__AndExpression__Group_1__0 )*
+            loop64:
             do {
-                int alt62=2;
-                int LA62_0 = input.LA(1);
+                int alt64=2;
+                int LA64_0 = input.LA(1);
 
-                if ( (LA62_0==88) ) {
-                    alt62=1;
+                if ( (LA64_0==92) ) {
+                    alt64=1;
                 }
 
 
-                switch (alt62) {
+                switch (alt64) {
             	case 1 :
-            	    // InternalHenshin_text.g:8180:3: rule__AndExpression__Group_1__0
+            	    // InternalHenshin_text.g:8256:3: rule__AndExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_40);
+            	    pushFollow(FOLLOW_41);
             	    rule__AndExpression__Group_1__0();
 
             	    state._fsp--;
@@ -25547,7 +25833,7 @@
             	    break;
 
             	default :
-            	    break loop62;
+            	    break loop64;
                 }
             } while (true);
 
@@ -25574,16 +25860,16 @@
 
 
     // $ANTLR start "rule__AndExpression__Group_1__0"
-    // InternalHenshin_text.g:8189:1: rule__AndExpression__Group_1__0 : rule__AndExpression__Group_1__0__Impl rule__AndExpression__Group_1__1 ;
+    // InternalHenshin_text.g:8265:1: rule__AndExpression__Group_1__0 : rule__AndExpression__Group_1__0__Impl rule__AndExpression__Group_1__1 ;
     public final void rule__AndExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8193:1: ( rule__AndExpression__Group_1__0__Impl rule__AndExpression__Group_1__1 )
-            // InternalHenshin_text.g:8194:2: rule__AndExpression__Group_1__0__Impl rule__AndExpression__Group_1__1
+            // InternalHenshin_text.g:8269:1: ( rule__AndExpression__Group_1__0__Impl rule__AndExpression__Group_1__1 )
+            // InternalHenshin_text.g:8270:2: rule__AndExpression__Group_1__0__Impl rule__AndExpression__Group_1__1
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_40);
             rule__AndExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -25612,21 +25898,21 @@
 
 
     // $ANTLR start "rule__AndExpression__Group_1__0__Impl"
-    // InternalHenshin_text.g:8201:1: rule__AndExpression__Group_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:8277:1: rule__AndExpression__Group_1__0__Impl : ( () ) ;
     public final void rule__AndExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8205:1: ( ( () ) )
-            // InternalHenshin_text.g:8206:1: ( () )
+            // InternalHenshin_text.g:8281:1: ( ( () ) )
+            // InternalHenshin_text.g:8282:1: ( () )
             {
-            // InternalHenshin_text.g:8206:1: ( () )
-            // InternalHenshin_text.g:8207:2: ()
+            // InternalHenshin_text.g:8282:1: ( () )
+            // InternalHenshin_text.g:8283:2: ()
             {
              before(grammarAccess.getAndExpressionAccess().getAndExpressionLeftAction_1_0()); 
-            // InternalHenshin_text.g:8208:2: ()
-            // InternalHenshin_text.g:8208:3: 
+            // InternalHenshin_text.g:8284:2: ()
+            // InternalHenshin_text.g:8284:3: 
             {
             }
 
@@ -25649,16 +25935,16 @@
 
 
     // $ANTLR start "rule__AndExpression__Group_1__1"
-    // InternalHenshin_text.g:8216:1: rule__AndExpression__Group_1__1 : rule__AndExpression__Group_1__1__Impl rule__AndExpression__Group_1__2 ;
+    // InternalHenshin_text.g:8292:1: rule__AndExpression__Group_1__1 : rule__AndExpression__Group_1__1__Impl rule__AndExpression__Group_1__2 ;
     public final void rule__AndExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8220:1: ( rule__AndExpression__Group_1__1__Impl rule__AndExpression__Group_1__2 )
-            // InternalHenshin_text.g:8221:2: rule__AndExpression__Group_1__1__Impl rule__AndExpression__Group_1__2
+            // InternalHenshin_text.g:8296:1: ( rule__AndExpression__Group_1__1__Impl rule__AndExpression__Group_1__2 )
+            // InternalHenshin_text.g:8297:2: rule__AndExpression__Group_1__1__Impl rule__AndExpression__Group_1__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__AndExpression__Group_1__1__Impl();
 
             state._fsp--;
@@ -25687,20 +25973,20 @@
 
 
     // $ANTLR start "rule__AndExpression__Group_1__1__Impl"
-    // InternalHenshin_text.g:8228:1: rule__AndExpression__Group_1__1__Impl : ( 'AND' ) ;
+    // InternalHenshin_text.g:8304:1: rule__AndExpression__Group_1__1__Impl : ( 'AND' ) ;
     public final void rule__AndExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8232:1: ( ( 'AND' ) )
-            // InternalHenshin_text.g:8233:1: ( 'AND' )
+            // InternalHenshin_text.g:8308:1: ( ( 'AND' ) )
+            // InternalHenshin_text.g:8309:1: ( 'AND' )
             {
-            // InternalHenshin_text.g:8233:1: ( 'AND' )
-            // InternalHenshin_text.g:8234:2: 'AND'
+            // InternalHenshin_text.g:8309:1: ( 'AND' )
+            // InternalHenshin_text.g:8310:2: 'AND'
             {
              before(grammarAccess.getAndExpressionAccess().getANDKeyword_1_1()); 
-            match(input,88,FOLLOW_2); 
+            match(input,92,FOLLOW_2); 
              after(grammarAccess.getAndExpressionAccess().getANDKeyword_1_1()); 
 
             }
@@ -25724,14 +26010,14 @@
 
 
     // $ANTLR start "rule__AndExpression__Group_1__2"
-    // InternalHenshin_text.g:8243:1: rule__AndExpression__Group_1__2 : rule__AndExpression__Group_1__2__Impl ;
+    // InternalHenshin_text.g:8319:1: rule__AndExpression__Group_1__2 : rule__AndExpression__Group_1__2__Impl ;
     public final void rule__AndExpression__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8247:1: ( rule__AndExpression__Group_1__2__Impl )
-            // InternalHenshin_text.g:8248:2: rule__AndExpression__Group_1__2__Impl
+            // InternalHenshin_text.g:8323:1: ( rule__AndExpression__Group_1__2__Impl )
+            // InternalHenshin_text.g:8324:2: rule__AndExpression__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AndExpression__Group_1__2__Impl();
@@ -25757,21 +26043,21 @@
 
 
     // $ANTLR start "rule__AndExpression__Group_1__2__Impl"
-    // InternalHenshin_text.g:8254:1: rule__AndExpression__Group_1__2__Impl : ( ( rule__AndExpression__RightAssignment_1_2 ) ) ;
+    // InternalHenshin_text.g:8330:1: rule__AndExpression__Group_1__2__Impl : ( ( rule__AndExpression__RightAssignment_1_2 ) ) ;
     public final void rule__AndExpression__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8258:1: ( ( ( rule__AndExpression__RightAssignment_1_2 ) ) )
-            // InternalHenshin_text.g:8259:1: ( ( rule__AndExpression__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:8334:1: ( ( ( rule__AndExpression__RightAssignment_1_2 ) ) )
+            // InternalHenshin_text.g:8335:1: ( ( rule__AndExpression__RightAssignment_1_2 ) )
             {
-            // InternalHenshin_text.g:8259:1: ( ( rule__AndExpression__RightAssignment_1_2 ) )
-            // InternalHenshin_text.g:8260:2: ( rule__AndExpression__RightAssignment_1_2 )
+            // InternalHenshin_text.g:8335:1: ( ( rule__AndExpression__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:8336:2: ( rule__AndExpression__RightAssignment_1_2 )
             {
              before(grammarAccess.getAndExpressionAccess().getRightAssignment_1_2()); 
-            // InternalHenshin_text.g:8261:2: ( rule__AndExpression__RightAssignment_1_2 )
-            // InternalHenshin_text.g:8261:3: rule__AndExpression__RightAssignment_1_2
+            // InternalHenshin_text.g:8337:2: ( rule__AndExpression__RightAssignment_1_2 )
+            // InternalHenshin_text.g:8337:3: rule__AndExpression__RightAssignment_1_2
             {
             pushFollow(FOLLOW_2);
             rule__AndExpression__RightAssignment_1_2();
@@ -25804,16 +26090,16 @@
 
 
     // $ANTLR start "rule__EqualityExpression__Group__0"
-    // InternalHenshin_text.g:8270:1: rule__EqualityExpression__Group__0 : rule__EqualityExpression__Group__0__Impl rule__EqualityExpression__Group__1 ;
+    // InternalHenshin_text.g:8346:1: rule__EqualityExpression__Group__0 : rule__EqualityExpression__Group__0__Impl rule__EqualityExpression__Group__1 ;
     public final void rule__EqualityExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8274:1: ( rule__EqualityExpression__Group__0__Impl rule__EqualityExpression__Group__1 )
-            // InternalHenshin_text.g:8275:2: rule__EqualityExpression__Group__0__Impl rule__EqualityExpression__Group__1
+            // InternalHenshin_text.g:8350:1: ( rule__EqualityExpression__Group__0__Impl rule__EqualityExpression__Group__1 )
+            // InternalHenshin_text.g:8351:2: rule__EqualityExpression__Group__0__Impl rule__EqualityExpression__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__EqualityExpression__Group__0__Impl();
 
             state._fsp--;
@@ -25842,17 +26128,17 @@
 
 
     // $ANTLR start "rule__EqualityExpression__Group__0__Impl"
-    // InternalHenshin_text.g:8282:1: rule__EqualityExpression__Group__0__Impl : ( ruleComparisonExpression ) ;
+    // InternalHenshin_text.g:8358:1: rule__EqualityExpression__Group__0__Impl : ( ruleComparisonExpression ) ;
     public final void rule__EqualityExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8286:1: ( ( ruleComparisonExpression ) )
-            // InternalHenshin_text.g:8287:1: ( ruleComparisonExpression )
+            // InternalHenshin_text.g:8362:1: ( ( ruleComparisonExpression ) )
+            // InternalHenshin_text.g:8363:1: ( ruleComparisonExpression )
             {
-            // InternalHenshin_text.g:8287:1: ( ruleComparisonExpression )
-            // InternalHenshin_text.g:8288:2: ruleComparisonExpression
+            // InternalHenshin_text.g:8363:1: ( ruleComparisonExpression )
+            // InternalHenshin_text.g:8364:2: ruleComparisonExpression
             {
              before(grammarAccess.getEqualityExpressionAccess().getComparisonExpressionParserRuleCall_0()); 
             pushFollow(FOLLOW_2);
@@ -25883,14 +26169,14 @@
 
 
     // $ANTLR start "rule__EqualityExpression__Group__1"
-    // InternalHenshin_text.g:8297:1: rule__EqualityExpression__Group__1 : rule__EqualityExpression__Group__1__Impl ;
+    // InternalHenshin_text.g:8373:1: rule__EqualityExpression__Group__1 : rule__EqualityExpression__Group__1__Impl ;
     public final void rule__EqualityExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8301:1: ( rule__EqualityExpression__Group__1__Impl )
-            // InternalHenshin_text.g:8302:2: rule__EqualityExpression__Group__1__Impl
+            // InternalHenshin_text.g:8377:1: ( rule__EqualityExpression__Group__1__Impl )
+            // InternalHenshin_text.g:8378:2: rule__EqualityExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EqualityExpression__Group__1__Impl();
@@ -25916,35 +26202,35 @@
 
 
     // $ANTLR start "rule__EqualityExpression__Group__1__Impl"
-    // InternalHenshin_text.g:8308:1: rule__EqualityExpression__Group__1__Impl : ( ( rule__EqualityExpression__Group_1__0 )* ) ;
+    // InternalHenshin_text.g:8384:1: rule__EqualityExpression__Group__1__Impl : ( ( rule__EqualityExpression__Group_1__0 )* ) ;
     public final void rule__EqualityExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8312:1: ( ( ( rule__EqualityExpression__Group_1__0 )* ) )
-            // InternalHenshin_text.g:8313:1: ( ( rule__EqualityExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8388:1: ( ( ( rule__EqualityExpression__Group_1__0 )* ) )
+            // InternalHenshin_text.g:8389:1: ( ( rule__EqualityExpression__Group_1__0 )* )
             {
-            // InternalHenshin_text.g:8313:1: ( ( rule__EqualityExpression__Group_1__0 )* )
-            // InternalHenshin_text.g:8314:2: ( rule__EqualityExpression__Group_1__0 )*
+            // InternalHenshin_text.g:8389:1: ( ( rule__EqualityExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8390:2: ( rule__EqualityExpression__Group_1__0 )*
             {
              before(grammarAccess.getEqualityExpressionAccess().getGroup_1()); 
-            // InternalHenshin_text.g:8315:2: ( rule__EqualityExpression__Group_1__0 )*
-            loop63:
+            // InternalHenshin_text.g:8391:2: ( rule__EqualityExpression__Group_1__0 )*
+            loop65:
             do {
-                int alt63=2;
-                int LA63_0 = input.LA(1);
+                int alt65=2;
+                int LA65_0 = input.LA(1);
 
-                if ( ((LA63_0>=22 && LA63_0<=23)) ) {
-                    alt63=1;
+                if ( ((LA65_0>=22 && LA65_0<=23)) ) {
+                    alt65=1;
                 }
 
 
-                switch (alt63) {
+                switch (alt65) {
             	case 1 :
-            	    // InternalHenshin_text.g:8315:3: rule__EqualityExpression__Group_1__0
+            	    // InternalHenshin_text.g:8391:3: rule__EqualityExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_53);
+            	    pushFollow(FOLLOW_55);
             	    rule__EqualityExpression__Group_1__0();
 
             	    state._fsp--;
@@ -25954,7 +26240,7 @@
             	    break;
 
             	default :
-            	    break loop63;
+            	    break loop65;
                 }
             } while (true);
 
@@ -25981,16 +26267,16 @@
 
 
     // $ANTLR start "rule__EqualityExpression__Group_1__0"
-    // InternalHenshin_text.g:8324:1: rule__EqualityExpression__Group_1__0 : rule__EqualityExpression__Group_1__0__Impl rule__EqualityExpression__Group_1__1 ;
+    // InternalHenshin_text.g:8400:1: rule__EqualityExpression__Group_1__0 : rule__EqualityExpression__Group_1__0__Impl rule__EqualityExpression__Group_1__1 ;
     public final void rule__EqualityExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8328:1: ( rule__EqualityExpression__Group_1__0__Impl rule__EqualityExpression__Group_1__1 )
-            // InternalHenshin_text.g:8329:2: rule__EqualityExpression__Group_1__0__Impl rule__EqualityExpression__Group_1__1
+            // InternalHenshin_text.g:8404:1: ( rule__EqualityExpression__Group_1__0__Impl rule__EqualityExpression__Group_1__1 )
+            // InternalHenshin_text.g:8405:2: rule__EqualityExpression__Group_1__0__Impl rule__EqualityExpression__Group_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_54);
             rule__EqualityExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -26019,21 +26305,21 @@
 
 
     // $ANTLR start "rule__EqualityExpression__Group_1__0__Impl"
-    // InternalHenshin_text.g:8336:1: rule__EqualityExpression__Group_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:8412:1: rule__EqualityExpression__Group_1__0__Impl : ( () ) ;
     public final void rule__EqualityExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8340:1: ( ( () ) )
-            // InternalHenshin_text.g:8341:1: ( () )
+            // InternalHenshin_text.g:8416:1: ( ( () ) )
+            // InternalHenshin_text.g:8417:1: ( () )
             {
-            // InternalHenshin_text.g:8341:1: ( () )
-            // InternalHenshin_text.g:8342:2: ()
+            // InternalHenshin_text.g:8417:1: ( () )
+            // InternalHenshin_text.g:8418:2: ()
             {
              before(grammarAccess.getEqualityExpressionAccess().getEqualityExpressionLeftAction_1_0()); 
-            // InternalHenshin_text.g:8343:2: ()
-            // InternalHenshin_text.g:8343:3: 
+            // InternalHenshin_text.g:8419:2: ()
+            // InternalHenshin_text.g:8419:3: 
             {
             }
 
@@ -26056,16 +26342,16 @@
 
 
     // $ANTLR start "rule__EqualityExpression__Group_1__1"
-    // InternalHenshin_text.g:8351:1: rule__EqualityExpression__Group_1__1 : rule__EqualityExpression__Group_1__1__Impl rule__EqualityExpression__Group_1__2 ;
+    // InternalHenshin_text.g:8427:1: rule__EqualityExpression__Group_1__1 : rule__EqualityExpression__Group_1__1__Impl rule__EqualityExpression__Group_1__2 ;
     public final void rule__EqualityExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8355:1: ( rule__EqualityExpression__Group_1__1__Impl rule__EqualityExpression__Group_1__2 )
-            // InternalHenshin_text.g:8356:2: rule__EqualityExpression__Group_1__1__Impl rule__EqualityExpression__Group_1__2
+            // InternalHenshin_text.g:8431:1: ( rule__EqualityExpression__Group_1__1__Impl rule__EqualityExpression__Group_1__2 )
+            // InternalHenshin_text.g:8432:2: rule__EqualityExpression__Group_1__1__Impl rule__EqualityExpression__Group_1__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__EqualityExpression__Group_1__1__Impl();
 
             state._fsp--;
@@ -26094,21 +26380,21 @@
 
 
     // $ANTLR start "rule__EqualityExpression__Group_1__1__Impl"
-    // InternalHenshin_text.g:8363:1: rule__EqualityExpression__Group_1__1__Impl : ( ( rule__EqualityExpression__OpAssignment_1_1 ) ) ;
+    // InternalHenshin_text.g:8439:1: rule__EqualityExpression__Group_1__1__Impl : ( ( rule__EqualityExpression__OpAssignment_1_1 ) ) ;
     public final void rule__EqualityExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8367:1: ( ( ( rule__EqualityExpression__OpAssignment_1_1 ) ) )
-            // InternalHenshin_text.g:8368:1: ( ( rule__EqualityExpression__OpAssignment_1_1 ) )
+            // InternalHenshin_text.g:8443:1: ( ( ( rule__EqualityExpression__OpAssignment_1_1 ) ) )
+            // InternalHenshin_text.g:8444:1: ( ( rule__EqualityExpression__OpAssignment_1_1 ) )
             {
-            // InternalHenshin_text.g:8368:1: ( ( rule__EqualityExpression__OpAssignment_1_1 ) )
-            // InternalHenshin_text.g:8369:2: ( rule__EqualityExpression__OpAssignment_1_1 )
+            // InternalHenshin_text.g:8444:1: ( ( rule__EqualityExpression__OpAssignment_1_1 ) )
+            // InternalHenshin_text.g:8445:2: ( rule__EqualityExpression__OpAssignment_1_1 )
             {
              before(grammarAccess.getEqualityExpressionAccess().getOpAssignment_1_1()); 
-            // InternalHenshin_text.g:8370:2: ( rule__EqualityExpression__OpAssignment_1_1 )
-            // InternalHenshin_text.g:8370:3: rule__EqualityExpression__OpAssignment_1_1
+            // InternalHenshin_text.g:8446:2: ( rule__EqualityExpression__OpAssignment_1_1 )
+            // InternalHenshin_text.g:8446:3: rule__EqualityExpression__OpAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__EqualityExpression__OpAssignment_1_1();
@@ -26141,14 +26427,14 @@
 
 
     // $ANTLR start "rule__EqualityExpression__Group_1__2"
-    // InternalHenshin_text.g:8378:1: rule__EqualityExpression__Group_1__2 : rule__EqualityExpression__Group_1__2__Impl ;
+    // InternalHenshin_text.g:8454:1: rule__EqualityExpression__Group_1__2 : rule__EqualityExpression__Group_1__2__Impl ;
     public final void rule__EqualityExpression__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8382:1: ( rule__EqualityExpression__Group_1__2__Impl )
-            // InternalHenshin_text.g:8383:2: rule__EqualityExpression__Group_1__2__Impl
+            // InternalHenshin_text.g:8458:1: ( rule__EqualityExpression__Group_1__2__Impl )
+            // InternalHenshin_text.g:8459:2: rule__EqualityExpression__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__EqualityExpression__Group_1__2__Impl();
@@ -26174,21 +26460,21 @@
 
 
     // $ANTLR start "rule__EqualityExpression__Group_1__2__Impl"
-    // InternalHenshin_text.g:8389:1: rule__EqualityExpression__Group_1__2__Impl : ( ( rule__EqualityExpression__RightAssignment_1_2 ) ) ;
+    // InternalHenshin_text.g:8465:1: rule__EqualityExpression__Group_1__2__Impl : ( ( rule__EqualityExpression__RightAssignment_1_2 ) ) ;
     public final void rule__EqualityExpression__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8393:1: ( ( ( rule__EqualityExpression__RightAssignment_1_2 ) ) )
-            // InternalHenshin_text.g:8394:1: ( ( rule__EqualityExpression__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:8469:1: ( ( ( rule__EqualityExpression__RightAssignment_1_2 ) ) )
+            // InternalHenshin_text.g:8470:1: ( ( rule__EqualityExpression__RightAssignment_1_2 ) )
             {
-            // InternalHenshin_text.g:8394:1: ( ( rule__EqualityExpression__RightAssignment_1_2 ) )
-            // InternalHenshin_text.g:8395:2: ( rule__EqualityExpression__RightAssignment_1_2 )
+            // InternalHenshin_text.g:8470:1: ( ( rule__EqualityExpression__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:8471:2: ( rule__EqualityExpression__RightAssignment_1_2 )
             {
              before(grammarAccess.getEqualityExpressionAccess().getRightAssignment_1_2()); 
-            // InternalHenshin_text.g:8396:2: ( rule__EqualityExpression__RightAssignment_1_2 )
-            // InternalHenshin_text.g:8396:3: rule__EqualityExpression__RightAssignment_1_2
+            // InternalHenshin_text.g:8472:2: ( rule__EqualityExpression__RightAssignment_1_2 )
+            // InternalHenshin_text.g:8472:3: rule__EqualityExpression__RightAssignment_1_2
             {
             pushFollow(FOLLOW_2);
             rule__EqualityExpression__RightAssignment_1_2();
@@ -26221,16 +26507,16 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__Group__0"
-    // InternalHenshin_text.g:8405:1: rule__ComparisonExpression__Group__0 : rule__ComparisonExpression__Group__0__Impl rule__ComparisonExpression__Group__1 ;
+    // InternalHenshin_text.g:8481:1: rule__ComparisonExpression__Group__0 : rule__ComparisonExpression__Group__0__Impl rule__ComparisonExpression__Group__1 ;
     public final void rule__ComparisonExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8409:1: ( rule__ComparisonExpression__Group__0__Impl rule__ComparisonExpression__Group__1 )
-            // InternalHenshin_text.g:8410:2: rule__ComparisonExpression__Group__0__Impl rule__ComparisonExpression__Group__1
+            // InternalHenshin_text.g:8485:1: ( rule__ComparisonExpression__Group__0__Impl rule__ComparisonExpression__Group__1 )
+            // InternalHenshin_text.g:8486:2: rule__ComparisonExpression__Group__0__Impl rule__ComparisonExpression__Group__1
             {
-            pushFollow(FOLLOW_54);
+            pushFollow(FOLLOW_56);
             rule__ComparisonExpression__Group__0__Impl();
 
             state._fsp--;
@@ -26259,17 +26545,17 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__Group__0__Impl"
-    // InternalHenshin_text.g:8417:1: rule__ComparisonExpression__Group__0__Impl : ( rulePlusOrMinusExpression ) ;
+    // InternalHenshin_text.g:8493:1: rule__ComparisonExpression__Group__0__Impl : ( rulePlusOrMinusExpression ) ;
     public final void rule__ComparisonExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8421:1: ( ( rulePlusOrMinusExpression ) )
-            // InternalHenshin_text.g:8422:1: ( rulePlusOrMinusExpression )
+            // InternalHenshin_text.g:8497:1: ( ( rulePlusOrMinusExpression ) )
+            // InternalHenshin_text.g:8498:1: ( rulePlusOrMinusExpression )
             {
-            // InternalHenshin_text.g:8422:1: ( rulePlusOrMinusExpression )
-            // InternalHenshin_text.g:8423:2: rulePlusOrMinusExpression
+            // InternalHenshin_text.g:8498:1: ( rulePlusOrMinusExpression )
+            // InternalHenshin_text.g:8499:2: rulePlusOrMinusExpression
             {
              before(grammarAccess.getComparisonExpressionAccess().getPlusOrMinusExpressionParserRuleCall_0()); 
             pushFollow(FOLLOW_2);
@@ -26300,14 +26586,14 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__Group__1"
-    // InternalHenshin_text.g:8432:1: rule__ComparisonExpression__Group__1 : rule__ComparisonExpression__Group__1__Impl ;
+    // InternalHenshin_text.g:8508:1: rule__ComparisonExpression__Group__1 : rule__ComparisonExpression__Group__1__Impl ;
     public final void rule__ComparisonExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8436:1: ( rule__ComparisonExpression__Group__1__Impl )
-            // InternalHenshin_text.g:8437:2: rule__ComparisonExpression__Group__1__Impl
+            // InternalHenshin_text.g:8512:1: ( rule__ComparisonExpression__Group__1__Impl )
+            // InternalHenshin_text.g:8513:2: rule__ComparisonExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ComparisonExpression__Group__1__Impl();
@@ -26333,35 +26619,35 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__Group__1__Impl"
-    // InternalHenshin_text.g:8443:1: rule__ComparisonExpression__Group__1__Impl : ( ( rule__ComparisonExpression__Group_1__0 )* ) ;
+    // InternalHenshin_text.g:8519:1: rule__ComparisonExpression__Group__1__Impl : ( ( rule__ComparisonExpression__Group_1__0 )* ) ;
     public final void rule__ComparisonExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8447:1: ( ( ( rule__ComparisonExpression__Group_1__0 )* ) )
-            // InternalHenshin_text.g:8448:1: ( ( rule__ComparisonExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8523:1: ( ( ( rule__ComparisonExpression__Group_1__0 )* ) )
+            // InternalHenshin_text.g:8524:1: ( ( rule__ComparisonExpression__Group_1__0 )* )
             {
-            // InternalHenshin_text.g:8448:1: ( ( rule__ComparisonExpression__Group_1__0 )* )
-            // InternalHenshin_text.g:8449:2: ( rule__ComparisonExpression__Group_1__0 )*
+            // InternalHenshin_text.g:8524:1: ( ( rule__ComparisonExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8525:2: ( rule__ComparisonExpression__Group_1__0 )*
             {
              before(grammarAccess.getComparisonExpressionAccess().getGroup_1()); 
-            // InternalHenshin_text.g:8450:2: ( rule__ComparisonExpression__Group_1__0 )*
-            loop64:
+            // InternalHenshin_text.g:8526:2: ( rule__ComparisonExpression__Group_1__0 )*
+            loop66:
             do {
-                int alt64=2;
-                int LA64_0 = input.LA(1);
+                int alt66=2;
+                int LA66_0 = input.LA(1);
 
-                if ( ((LA64_0>=24 && LA64_0<=27)) ) {
-                    alt64=1;
+                if ( ((LA66_0>=24 && LA66_0<=27)) ) {
+                    alt66=1;
                 }
 
 
-                switch (alt64) {
+                switch (alt66) {
             	case 1 :
-            	    // InternalHenshin_text.g:8450:3: rule__ComparisonExpression__Group_1__0
+            	    // InternalHenshin_text.g:8526:3: rule__ComparisonExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_55);
+            	    pushFollow(FOLLOW_57);
             	    rule__ComparisonExpression__Group_1__0();
 
             	    state._fsp--;
@@ -26371,7 +26657,7 @@
             	    break;
 
             	default :
-            	    break loop64;
+            	    break loop66;
                 }
             } while (true);
 
@@ -26398,16 +26684,16 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__Group_1__0"
-    // InternalHenshin_text.g:8459:1: rule__ComparisonExpression__Group_1__0 : rule__ComparisonExpression__Group_1__0__Impl rule__ComparisonExpression__Group_1__1 ;
+    // InternalHenshin_text.g:8535:1: rule__ComparisonExpression__Group_1__0 : rule__ComparisonExpression__Group_1__0__Impl rule__ComparisonExpression__Group_1__1 ;
     public final void rule__ComparisonExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8463:1: ( rule__ComparisonExpression__Group_1__0__Impl rule__ComparisonExpression__Group_1__1 )
-            // InternalHenshin_text.g:8464:2: rule__ComparisonExpression__Group_1__0__Impl rule__ComparisonExpression__Group_1__1
+            // InternalHenshin_text.g:8539:1: ( rule__ComparisonExpression__Group_1__0__Impl rule__ComparisonExpression__Group_1__1 )
+            // InternalHenshin_text.g:8540:2: rule__ComparisonExpression__Group_1__0__Impl rule__ComparisonExpression__Group_1__1
             {
-            pushFollow(FOLLOW_54);
+            pushFollow(FOLLOW_56);
             rule__ComparisonExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -26436,21 +26722,21 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__Group_1__0__Impl"
-    // InternalHenshin_text.g:8471:1: rule__ComparisonExpression__Group_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:8547:1: rule__ComparisonExpression__Group_1__0__Impl : ( () ) ;
     public final void rule__ComparisonExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8475:1: ( ( () ) )
-            // InternalHenshin_text.g:8476:1: ( () )
+            // InternalHenshin_text.g:8551:1: ( ( () ) )
+            // InternalHenshin_text.g:8552:1: ( () )
             {
-            // InternalHenshin_text.g:8476:1: ( () )
-            // InternalHenshin_text.g:8477:2: ()
+            // InternalHenshin_text.g:8552:1: ( () )
+            // InternalHenshin_text.g:8553:2: ()
             {
              before(grammarAccess.getComparisonExpressionAccess().getComparisonExpressionLeftAction_1_0()); 
-            // InternalHenshin_text.g:8478:2: ()
-            // InternalHenshin_text.g:8478:3: 
+            // InternalHenshin_text.g:8554:2: ()
+            // InternalHenshin_text.g:8554:3: 
             {
             }
 
@@ -26473,16 +26759,16 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__Group_1__1"
-    // InternalHenshin_text.g:8486:1: rule__ComparisonExpression__Group_1__1 : rule__ComparisonExpression__Group_1__1__Impl rule__ComparisonExpression__Group_1__2 ;
+    // InternalHenshin_text.g:8562:1: rule__ComparisonExpression__Group_1__1 : rule__ComparisonExpression__Group_1__1__Impl rule__ComparisonExpression__Group_1__2 ;
     public final void rule__ComparisonExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8490:1: ( rule__ComparisonExpression__Group_1__1__Impl rule__ComparisonExpression__Group_1__2 )
-            // InternalHenshin_text.g:8491:2: rule__ComparisonExpression__Group_1__1__Impl rule__ComparisonExpression__Group_1__2
+            // InternalHenshin_text.g:8566:1: ( rule__ComparisonExpression__Group_1__1__Impl rule__ComparisonExpression__Group_1__2 )
+            // InternalHenshin_text.g:8567:2: rule__ComparisonExpression__Group_1__1__Impl rule__ComparisonExpression__Group_1__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__ComparisonExpression__Group_1__1__Impl();
 
             state._fsp--;
@@ -26511,21 +26797,21 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__Group_1__1__Impl"
-    // InternalHenshin_text.g:8498:1: rule__ComparisonExpression__Group_1__1__Impl : ( ( rule__ComparisonExpression__OpAssignment_1_1 ) ) ;
+    // InternalHenshin_text.g:8574:1: rule__ComparisonExpression__Group_1__1__Impl : ( ( rule__ComparisonExpression__OpAssignment_1_1 ) ) ;
     public final void rule__ComparisonExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8502:1: ( ( ( rule__ComparisonExpression__OpAssignment_1_1 ) ) )
-            // InternalHenshin_text.g:8503:1: ( ( rule__ComparisonExpression__OpAssignment_1_1 ) )
+            // InternalHenshin_text.g:8578:1: ( ( ( rule__ComparisonExpression__OpAssignment_1_1 ) ) )
+            // InternalHenshin_text.g:8579:1: ( ( rule__ComparisonExpression__OpAssignment_1_1 ) )
             {
-            // InternalHenshin_text.g:8503:1: ( ( rule__ComparisonExpression__OpAssignment_1_1 ) )
-            // InternalHenshin_text.g:8504:2: ( rule__ComparisonExpression__OpAssignment_1_1 )
+            // InternalHenshin_text.g:8579:1: ( ( rule__ComparisonExpression__OpAssignment_1_1 ) )
+            // InternalHenshin_text.g:8580:2: ( rule__ComparisonExpression__OpAssignment_1_1 )
             {
              before(grammarAccess.getComparisonExpressionAccess().getOpAssignment_1_1()); 
-            // InternalHenshin_text.g:8505:2: ( rule__ComparisonExpression__OpAssignment_1_1 )
-            // InternalHenshin_text.g:8505:3: rule__ComparisonExpression__OpAssignment_1_1
+            // InternalHenshin_text.g:8581:2: ( rule__ComparisonExpression__OpAssignment_1_1 )
+            // InternalHenshin_text.g:8581:3: rule__ComparisonExpression__OpAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__ComparisonExpression__OpAssignment_1_1();
@@ -26558,14 +26844,14 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__Group_1__2"
-    // InternalHenshin_text.g:8513:1: rule__ComparisonExpression__Group_1__2 : rule__ComparisonExpression__Group_1__2__Impl ;
+    // InternalHenshin_text.g:8589:1: rule__ComparisonExpression__Group_1__2 : rule__ComparisonExpression__Group_1__2__Impl ;
     public final void rule__ComparisonExpression__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8517:1: ( rule__ComparisonExpression__Group_1__2__Impl )
-            // InternalHenshin_text.g:8518:2: rule__ComparisonExpression__Group_1__2__Impl
+            // InternalHenshin_text.g:8593:1: ( rule__ComparisonExpression__Group_1__2__Impl )
+            // InternalHenshin_text.g:8594:2: rule__ComparisonExpression__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ComparisonExpression__Group_1__2__Impl();
@@ -26591,21 +26877,21 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__Group_1__2__Impl"
-    // InternalHenshin_text.g:8524:1: rule__ComparisonExpression__Group_1__2__Impl : ( ( rule__ComparisonExpression__RightAssignment_1_2 ) ) ;
+    // InternalHenshin_text.g:8600:1: rule__ComparisonExpression__Group_1__2__Impl : ( ( rule__ComparisonExpression__RightAssignment_1_2 ) ) ;
     public final void rule__ComparisonExpression__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8528:1: ( ( ( rule__ComparisonExpression__RightAssignment_1_2 ) ) )
-            // InternalHenshin_text.g:8529:1: ( ( rule__ComparisonExpression__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:8604:1: ( ( ( rule__ComparisonExpression__RightAssignment_1_2 ) ) )
+            // InternalHenshin_text.g:8605:1: ( ( rule__ComparisonExpression__RightAssignment_1_2 ) )
             {
-            // InternalHenshin_text.g:8529:1: ( ( rule__ComparisonExpression__RightAssignment_1_2 ) )
-            // InternalHenshin_text.g:8530:2: ( rule__ComparisonExpression__RightAssignment_1_2 )
+            // InternalHenshin_text.g:8605:1: ( ( rule__ComparisonExpression__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:8606:2: ( rule__ComparisonExpression__RightAssignment_1_2 )
             {
              before(grammarAccess.getComparisonExpressionAccess().getRightAssignment_1_2()); 
-            // InternalHenshin_text.g:8531:2: ( rule__ComparisonExpression__RightAssignment_1_2 )
-            // InternalHenshin_text.g:8531:3: rule__ComparisonExpression__RightAssignment_1_2
+            // InternalHenshin_text.g:8607:2: ( rule__ComparisonExpression__RightAssignment_1_2 )
+            // InternalHenshin_text.g:8607:3: rule__ComparisonExpression__RightAssignment_1_2
             {
             pushFollow(FOLLOW_2);
             rule__ComparisonExpression__RightAssignment_1_2();
@@ -26638,16 +26924,16 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group__0"
-    // InternalHenshin_text.g:8540:1: rule__PlusOrMinusExpression__Group__0 : rule__PlusOrMinusExpression__Group__0__Impl rule__PlusOrMinusExpression__Group__1 ;
+    // InternalHenshin_text.g:8616:1: rule__PlusOrMinusExpression__Group__0 : rule__PlusOrMinusExpression__Group__0__Impl rule__PlusOrMinusExpression__Group__1 ;
     public final void rule__PlusOrMinusExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8544:1: ( rule__PlusOrMinusExpression__Group__0__Impl rule__PlusOrMinusExpression__Group__1 )
-            // InternalHenshin_text.g:8545:2: rule__PlusOrMinusExpression__Group__0__Impl rule__PlusOrMinusExpression__Group__1
+            // InternalHenshin_text.g:8620:1: ( rule__PlusOrMinusExpression__Group__0__Impl rule__PlusOrMinusExpression__Group__1 )
+            // InternalHenshin_text.g:8621:2: rule__PlusOrMinusExpression__Group__0__Impl rule__PlusOrMinusExpression__Group__1
             {
-            pushFollow(FOLLOW_56);
+            pushFollow(FOLLOW_58);
             rule__PlusOrMinusExpression__Group__0__Impl();
 
             state._fsp--;
@@ -26676,17 +26962,17 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group__0__Impl"
-    // InternalHenshin_text.g:8552:1: rule__PlusOrMinusExpression__Group__0__Impl : ( ruleMulOrDivExpression ) ;
+    // InternalHenshin_text.g:8628:1: rule__PlusOrMinusExpression__Group__0__Impl : ( ruleMulOrDivExpression ) ;
     public final void rule__PlusOrMinusExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8556:1: ( ( ruleMulOrDivExpression ) )
-            // InternalHenshin_text.g:8557:1: ( ruleMulOrDivExpression )
+            // InternalHenshin_text.g:8632:1: ( ( ruleMulOrDivExpression ) )
+            // InternalHenshin_text.g:8633:1: ( ruleMulOrDivExpression )
             {
-            // InternalHenshin_text.g:8557:1: ( ruleMulOrDivExpression )
-            // InternalHenshin_text.g:8558:2: ruleMulOrDivExpression
+            // InternalHenshin_text.g:8633:1: ( ruleMulOrDivExpression )
+            // InternalHenshin_text.g:8634:2: ruleMulOrDivExpression
             {
              before(grammarAccess.getPlusOrMinusExpressionAccess().getMulOrDivExpressionParserRuleCall_0()); 
             pushFollow(FOLLOW_2);
@@ -26717,14 +27003,14 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group__1"
-    // InternalHenshin_text.g:8567:1: rule__PlusOrMinusExpression__Group__1 : rule__PlusOrMinusExpression__Group__1__Impl ;
+    // InternalHenshin_text.g:8643:1: rule__PlusOrMinusExpression__Group__1 : rule__PlusOrMinusExpression__Group__1__Impl ;
     public final void rule__PlusOrMinusExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8571:1: ( rule__PlusOrMinusExpression__Group__1__Impl )
-            // InternalHenshin_text.g:8572:2: rule__PlusOrMinusExpression__Group__1__Impl
+            // InternalHenshin_text.g:8647:1: ( rule__PlusOrMinusExpression__Group__1__Impl )
+            // InternalHenshin_text.g:8648:2: rule__PlusOrMinusExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PlusOrMinusExpression__Group__1__Impl();
@@ -26750,35 +27036,35 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group__1__Impl"
-    // InternalHenshin_text.g:8578:1: rule__PlusOrMinusExpression__Group__1__Impl : ( ( rule__PlusOrMinusExpression__Group_1__0 )* ) ;
+    // InternalHenshin_text.g:8654:1: rule__PlusOrMinusExpression__Group__1__Impl : ( ( rule__PlusOrMinusExpression__Group_1__0 )* ) ;
     public final void rule__PlusOrMinusExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8582:1: ( ( ( rule__PlusOrMinusExpression__Group_1__0 )* ) )
-            // InternalHenshin_text.g:8583:1: ( ( rule__PlusOrMinusExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8658:1: ( ( ( rule__PlusOrMinusExpression__Group_1__0 )* ) )
+            // InternalHenshin_text.g:8659:1: ( ( rule__PlusOrMinusExpression__Group_1__0 )* )
             {
-            // InternalHenshin_text.g:8583:1: ( ( rule__PlusOrMinusExpression__Group_1__0 )* )
-            // InternalHenshin_text.g:8584:2: ( rule__PlusOrMinusExpression__Group_1__0 )*
+            // InternalHenshin_text.g:8659:1: ( ( rule__PlusOrMinusExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8660:2: ( rule__PlusOrMinusExpression__Group_1__0 )*
             {
              before(grammarAccess.getPlusOrMinusExpressionAccess().getGroup_1()); 
-            // InternalHenshin_text.g:8585:2: ( rule__PlusOrMinusExpression__Group_1__0 )*
-            loop65:
+            // InternalHenshin_text.g:8661:2: ( rule__PlusOrMinusExpression__Group_1__0 )*
+            loop67:
             do {
-                int alt65=2;
-                int LA65_0 = input.LA(1);
+                int alt67=2;
+                int LA67_0 = input.LA(1);
 
-                if ( ((LA65_0>=100 && LA65_0<=101)) ) {
-                    alt65=1;
+                if ( ((LA67_0>=104 && LA67_0<=105)) ) {
+                    alt67=1;
                 }
 
 
-                switch (alt65) {
+                switch (alt67) {
             	case 1 :
-            	    // InternalHenshin_text.g:8585:3: rule__PlusOrMinusExpression__Group_1__0
+            	    // InternalHenshin_text.g:8661:3: rule__PlusOrMinusExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_57);
+            	    pushFollow(FOLLOW_59);
             	    rule__PlusOrMinusExpression__Group_1__0();
 
             	    state._fsp--;
@@ -26788,7 +27074,7 @@
             	    break;
 
             	default :
-            	    break loop65;
+            	    break loop67;
                 }
             } while (true);
 
@@ -26815,16 +27101,16 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1__0"
-    // InternalHenshin_text.g:8594:1: rule__PlusOrMinusExpression__Group_1__0 : rule__PlusOrMinusExpression__Group_1__0__Impl rule__PlusOrMinusExpression__Group_1__1 ;
+    // InternalHenshin_text.g:8670:1: rule__PlusOrMinusExpression__Group_1__0 : rule__PlusOrMinusExpression__Group_1__0__Impl rule__PlusOrMinusExpression__Group_1__1 ;
     public final void rule__PlusOrMinusExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8598:1: ( rule__PlusOrMinusExpression__Group_1__0__Impl rule__PlusOrMinusExpression__Group_1__1 )
-            // InternalHenshin_text.g:8599:2: rule__PlusOrMinusExpression__Group_1__0__Impl rule__PlusOrMinusExpression__Group_1__1
+            // InternalHenshin_text.g:8674:1: ( rule__PlusOrMinusExpression__Group_1__0__Impl rule__PlusOrMinusExpression__Group_1__1 )
+            // InternalHenshin_text.g:8675:2: rule__PlusOrMinusExpression__Group_1__0__Impl rule__PlusOrMinusExpression__Group_1__1
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__PlusOrMinusExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -26853,21 +27139,21 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1__0__Impl"
-    // InternalHenshin_text.g:8606:1: rule__PlusOrMinusExpression__Group_1__0__Impl : ( ( rule__PlusOrMinusExpression__Alternatives_1_0 ) ) ;
+    // InternalHenshin_text.g:8682:1: rule__PlusOrMinusExpression__Group_1__0__Impl : ( ( rule__PlusOrMinusExpression__Alternatives_1_0 ) ) ;
     public final void rule__PlusOrMinusExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8610:1: ( ( ( rule__PlusOrMinusExpression__Alternatives_1_0 ) ) )
-            // InternalHenshin_text.g:8611:1: ( ( rule__PlusOrMinusExpression__Alternatives_1_0 ) )
+            // InternalHenshin_text.g:8686:1: ( ( ( rule__PlusOrMinusExpression__Alternatives_1_0 ) ) )
+            // InternalHenshin_text.g:8687:1: ( ( rule__PlusOrMinusExpression__Alternatives_1_0 ) )
             {
-            // InternalHenshin_text.g:8611:1: ( ( rule__PlusOrMinusExpression__Alternatives_1_0 ) )
-            // InternalHenshin_text.g:8612:2: ( rule__PlusOrMinusExpression__Alternatives_1_0 )
+            // InternalHenshin_text.g:8687:1: ( ( rule__PlusOrMinusExpression__Alternatives_1_0 ) )
+            // InternalHenshin_text.g:8688:2: ( rule__PlusOrMinusExpression__Alternatives_1_0 )
             {
              before(grammarAccess.getPlusOrMinusExpressionAccess().getAlternatives_1_0()); 
-            // InternalHenshin_text.g:8613:2: ( rule__PlusOrMinusExpression__Alternatives_1_0 )
-            // InternalHenshin_text.g:8613:3: rule__PlusOrMinusExpression__Alternatives_1_0
+            // InternalHenshin_text.g:8689:2: ( rule__PlusOrMinusExpression__Alternatives_1_0 )
+            // InternalHenshin_text.g:8689:3: rule__PlusOrMinusExpression__Alternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__PlusOrMinusExpression__Alternatives_1_0();
@@ -26900,14 +27186,14 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1__1"
-    // InternalHenshin_text.g:8621:1: rule__PlusOrMinusExpression__Group_1__1 : rule__PlusOrMinusExpression__Group_1__1__Impl ;
+    // InternalHenshin_text.g:8697:1: rule__PlusOrMinusExpression__Group_1__1 : rule__PlusOrMinusExpression__Group_1__1__Impl ;
     public final void rule__PlusOrMinusExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8625:1: ( rule__PlusOrMinusExpression__Group_1__1__Impl )
-            // InternalHenshin_text.g:8626:2: rule__PlusOrMinusExpression__Group_1__1__Impl
+            // InternalHenshin_text.g:8701:1: ( rule__PlusOrMinusExpression__Group_1__1__Impl )
+            // InternalHenshin_text.g:8702:2: rule__PlusOrMinusExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PlusOrMinusExpression__Group_1__1__Impl();
@@ -26933,21 +27219,21 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1__1__Impl"
-    // InternalHenshin_text.g:8632:1: rule__PlusOrMinusExpression__Group_1__1__Impl : ( ( rule__PlusOrMinusExpression__RightAssignment_1_1 ) ) ;
+    // InternalHenshin_text.g:8708:1: rule__PlusOrMinusExpression__Group_1__1__Impl : ( ( rule__PlusOrMinusExpression__RightAssignment_1_1 ) ) ;
     public final void rule__PlusOrMinusExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8636:1: ( ( ( rule__PlusOrMinusExpression__RightAssignment_1_1 ) ) )
-            // InternalHenshin_text.g:8637:1: ( ( rule__PlusOrMinusExpression__RightAssignment_1_1 ) )
+            // InternalHenshin_text.g:8712:1: ( ( ( rule__PlusOrMinusExpression__RightAssignment_1_1 ) ) )
+            // InternalHenshin_text.g:8713:1: ( ( rule__PlusOrMinusExpression__RightAssignment_1_1 ) )
             {
-            // InternalHenshin_text.g:8637:1: ( ( rule__PlusOrMinusExpression__RightAssignment_1_1 ) )
-            // InternalHenshin_text.g:8638:2: ( rule__PlusOrMinusExpression__RightAssignment_1_1 )
+            // InternalHenshin_text.g:8713:1: ( ( rule__PlusOrMinusExpression__RightAssignment_1_1 ) )
+            // InternalHenshin_text.g:8714:2: ( rule__PlusOrMinusExpression__RightAssignment_1_1 )
             {
              before(grammarAccess.getPlusOrMinusExpressionAccess().getRightAssignment_1_1()); 
-            // InternalHenshin_text.g:8639:2: ( rule__PlusOrMinusExpression__RightAssignment_1_1 )
-            // InternalHenshin_text.g:8639:3: rule__PlusOrMinusExpression__RightAssignment_1_1
+            // InternalHenshin_text.g:8715:2: ( rule__PlusOrMinusExpression__RightAssignment_1_1 )
+            // InternalHenshin_text.g:8715:3: rule__PlusOrMinusExpression__RightAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__PlusOrMinusExpression__RightAssignment_1_1();
@@ -26980,16 +27266,16 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1_0_0__0"
-    // InternalHenshin_text.g:8648:1: rule__PlusOrMinusExpression__Group_1_0_0__0 : rule__PlusOrMinusExpression__Group_1_0_0__0__Impl rule__PlusOrMinusExpression__Group_1_0_0__1 ;
+    // InternalHenshin_text.g:8724:1: rule__PlusOrMinusExpression__Group_1_0_0__0 : rule__PlusOrMinusExpression__Group_1_0_0__0__Impl rule__PlusOrMinusExpression__Group_1_0_0__1 ;
     public final void rule__PlusOrMinusExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8652:1: ( rule__PlusOrMinusExpression__Group_1_0_0__0__Impl rule__PlusOrMinusExpression__Group_1_0_0__1 )
-            // InternalHenshin_text.g:8653:2: rule__PlusOrMinusExpression__Group_1_0_0__0__Impl rule__PlusOrMinusExpression__Group_1_0_0__1
+            // InternalHenshin_text.g:8728:1: ( rule__PlusOrMinusExpression__Group_1_0_0__0__Impl rule__PlusOrMinusExpression__Group_1_0_0__1 )
+            // InternalHenshin_text.g:8729:2: rule__PlusOrMinusExpression__Group_1_0_0__0__Impl rule__PlusOrMinusExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_58);
+            pushFollow(FOLLOW_60);
             rule__PlusOrMinusExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -27018,21 +27304,21 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1_0_0__0__Impl"
-    // InternalHenshin_text.g:8660:1: rule__PlusOrMinusExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:8736:1: rule__PlusOrMinusExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__PlusOrMinusExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8664:1: ( ( () ) )
-            // InternalHenshin_text.g:8665:1: ( () )
+            // InternalHenshin_text.g:8740:1: ( ( () ) )
+            // InternalHenshin_text.g:8741:1: ( () )
             {
-            // InternalHenshin_text.g:8665:1: ( () )
-            // InternalHenshin_text.g:8666:2: ()
+            // InternalHenshin_text.g:8741:1: ( () )
+            // InternalHenshin_text.g:8742:2: ()
             {
              before(grammarAccess.getPlusOrMinusExpressionAccess().getPlusExpressionLeftAction_1_0_0_0()); 
-            // InternalHenshin_text.g:8667:2: ()
-            // InternalHenshin_text.g:8667:3: 
+            // InternalHenshin_text.g:8743:2: ()
+            // InternalHenshin_text.g:8743:3: 
             {
             }
 
@@ -27055,14 +27341,14 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1_0_0__1"
-    // InternalHenshin_text.g:8675:1: rule__PlusOrMinusExpression__Group_1_0_0__1 : rule__PlusOrMinusExpression__Group_1_0_0__1__Impl ;
+    // InternalHenshin_text.g:8751:1: rule__PlusOrMinusExpression__Group_1_0_0__1 : rule__PlusOrMinusExpression__Group_1_0_0__1__Impl ;
     public final void rule__PlusOrMinusExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8679:1: ( rule__PlusOrMinusExpression__Group_1_0_0__1__Impl )
-            // InternalHenshin_text.g:8680:2: rule__PlusOrMinusExpression__Group_1_0_0__1__Impl
+            // InternalHenshin_text.g:8755:1: ( rule__PlusOrMinusExpression__Group_1_0_0__1__Impl )
+            // InternalHenshin_text.g:8756:2: rule__PlusOrMinusExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PlusOrMinusExpression__Group_1_0_0__1__Impl();
@@ -27088,20 +27374,20 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1_0_0__1__Impl"
-    // InternalHenshin_text.g:8686:1: rule__PlusOrMinusExpression__Group_1_0_0__1__Impl : ( '+' ) ;
+    // InternalHenshin_text.g:8762:1: rule__PlusOrMinusExpression__Group_1_0_0__1__Impl : ( '+' ) ;
     public final void rule__PlusOrMinusExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8690:1: ( ( '+' ) )
-            // InternalHenshin_text.g:8691:1: ( '+' )
+            // InternalHenshin_text.g:8766:1: ( ( '+' ) )
+            // InternalHenshin_text.g:8767:1: ( '+' )
             {
-            // InternalHenshin_text.g:8691:1: ( '+' )
-            // InternalHenshin_text.g:8692:2: '+'
+            // InternalHenshin_text.g:8767:1: ( '+' )
+            // InternalHenshin_text.g:8768:2: '+'
             {
              before(grammarAccess.getPlusOrMinusExpressionAccess().getPlusSignKeyword_1_0_0_1()); 
-            match(input,100,FOLLOW_2); 
+            match(input,104,FOLLOW_2); 
              after(grammarAccess.getPlusOrMinusExpressionAccess().getPlusSignKeyword_1_0_0_1()); 
 
             }
@@ -27125,16 +27411,16 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1_0_1__0"
-    // InternalHenshin_text.g:8702:1: rule__PlusOrMinusExpression__Group_1_0_1__0 : rule__PlusOrMinusExpression__Group_1_0_1__0__Impl rule__PlusOrMinusExpression__Group_1_0_1__1 ;
+    // InternalHenshin_text.g:8778:1: rule__PlusOrMinusExpression__Group_1_0_1__0 : rule__PlusOrMinusExpression__Group_1_0_1__0__Impl rule__PlusOrMinusExpression__Group_1_0_1__1 ;
     public final void rule__PlusOrMinusExpression__Group_1_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8706:1: ( rule__PlusOrMinusExpression__Group_1_0_1__0__Impl rule__PlusOrMinusExpression__Group_1_0_1__1 )
-            // InternalHenshin_text.g:8707:2: rule__PlusOrMinusExpression__Group_1_0_1__0__Impl rule__PlusOrMinusExpression__Group_1_0_1__1
+            // InternalHenshin_text.g:8782:1: ( rule__PlusOrMinusExpression__Group_1_0_1__0__Impl rule__PlusOrMinusExpression__Group_1_0_1__1 )
+            // InternalHenshin_text.g:8783:2: rule__PlusOrMinusExpression__Group_1_0_1__0__Impl rule__PlusOrMinusExpression__Group_1_0_1__1
             {
-            pushFollow(FOLLOW_56);
+            pushFollow(FOLLOW_58);
             rule__PlusOrMinusExpression__Group_1_0_1__0__Impl();
 
             state._fsp--;
@@ -27163,21 +27449,21 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1_0_1__0__Impl"
-    // InternalHenshin_text.g:8714:1: rule__PlusOrMinusExpression__Group_1_0_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:8790:1: rule__PlusOrMinusExpression__Group_1_0_1__0__Impl : ( () ) ;
     public final void rule__PlusOrMinusExpression__Group_1_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8718:1: ( ( () ) )
-            // InternalHenshin_text.g:8719:1: ( () )
+            // InternalHenshin_text.g:8794:1: ( ( () ) )
+            // InternalHenshin_text.g:8795:1: ( () )
             {
-            // InternalHenshin_text.g:8719:1: ( () )
-            // InternalHenshin_text.g:8720:2: ()
+            // InternalHenshin_text.g:8795:1: ( () )
+            // InternalHenshin_text.g:8796:2: ()
             {
              before(grammarAccess.getPlusOrMinusExpressionAccess().getMinusExpressionLeftAction_1_0_1_0()); 
-            // InternalHenshin_text.g:8721:2: ()
-            // InternalHenshin_text.g:8721:3: 
+            // InternalHenshin_text.g:8797:2: ()
+            // InternalHenshin_text.g:8797:3: 
             {
             }
 
@@ -27200,14 +27486,14 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1_0_1__1"
-    // InternalHenshin_text.g:8729:1: rule__PlusOrMinusExpression__Group_1_0_1__1 : rule__PlusOrMinusExpression__Group_1_0_1__1__Impl ;
+    // InternalHenshin_text.g:8805:1: rule__PlusOrMinusExpression__Group_1_0_1__1 : rule__PlusOrMinusExpression__Group_1_0_1__1__Impl ;
     public final void rule__PlusOrMinusExpression__Group_1_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8733:1: ( rule__PlusOrMinusExpression__Group_1_0_1__1__Impl )
-            // InternalHenshin_text.g:8734:2: rule__PlusOrMinusExpression__Group_1_0_1__1__Impl
+            // InternalHenshin_text.g:8809:1: ( rule__PlusOrMinusExpression__Group_1_0_1__1__Impl )
+            // InternalHenshin_text.g:8810:2: rule__PlusOrMinusExpression__Group_1_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PlusOrMinusExpression__Group_1_0_1__1__Impl();
@@ -27233,20 +27519,20 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__Group_1_0_1__1__Impl"
-    // InternalHenshin_text.g:8740:1: rule__PlusOrMinusExpression__Group_1_0_1__1__Impl : ( '-' ) ;
+    // InternalHenshin_text.g:8816:1: rule__PlusOrMinusExpression__Group_1_0_1__1__Impl : ( '-' ) ;
     public final void rule__PlusOrMinusExpression__Group_1_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8744:1: ( ( '-' ) )
-            // InternalHenshin_text.g:8745:1: ( '-' )
+            // InternalHenshin_text.g:8820:1: ( ( '-' ) )
+            // InternalHenshin_text.g:8821:1: ( '-' )
             {
-            // InternalHenshin_text.g:8745:1: ( '-' )
-            // InternalHenshin_text.g:8746:2: '-'
+            // InternalHenshin_text.g:8821:1: ( '-' )
+            // InternalHenshin_text.g:8822:2: '-'
             {
              before(grammarAccess.getPlusOrMinusExpressionAccess().getHyphenMinusKeyword_1_0_1_1()); 
-            match(input,101,FOLLOW_2); 
+            match(input,105,FOLLOW_2); 
              after(grammarAccess.getPlusOrMinusExpressionAccess().getHyphenMinusKeyword_1_0_1_1()); 
 
             }
@@ -27270,16 +27556,16 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__Group__0"
-    // InternalHenshin_text.g:8756:1: rule__MulOrDivExpression__Group__0 : rule__MulOrDivExpression__Group__0__Impl rule__MulOrDivExpression__Group__1 ;
+    // InternalHenshin_text.g:8832:1: rule__MulOrDivExpression__Group__0 : rule__MulOrDivExpression__Group__0__Impl rule__MulOrDivExpression__Group__1 ;
     public final void rule__MulOrDivExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8760:1: ( rule__MulOrDivExpression__Group__0__Impl rule__MulOrDivExpression__Group__1 )
-            // InternalHenshin_text.g:8761:2: rule__MulOrDivExpression__Group__0__Impl rule__MulOrDivExpression__Group__1
+            // InternalHenshin_text.g:8836:1: ( rule__MulOrDivExpression__Group__0__Impl rule__MulOrDivExpression__Group__1 )
+            // InternalHenshin_text.g:8837:2: rule__MulOrDivExpression__Group__0__Impl rule__MulOrDivExpression__Group__1
             {
-            pushFollow(FOLLOW_59);
+            pushFollow(FOLLOW_61);
             rule__MulOrDivExpression__Group__0__Impl();
 
             state._fsp--;
@@ -27308,17 +27594,17 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__Group__0__Impl"
-    // InternalHenshin_text.g:8768:1: rule__MulOrDivExpression__Group__0__Impl : ( rulePrimaryExpression ) ;
+    // InternalHenshin_text.g:8844:1: rule__MulOrDivExpression__Group__0__Impl : ( rulePrimaryExpression ) ;
     public final void rule__MulOrDivExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8772:1: ( ( rulePrimaryExpression ) )
-            // InternalHenshin_text.g:8773:1: ( rulePrimaryExpression )
+            // InternalHenshin_text.g:8848:1: ( ( rulePrimaryExpression ) )
+            // InternalHenshin_text.g:8849:1: ( rulePrimaryExpression )
             {
-            // InternalHenshin_text.g:8773:1: ( rulePrimaryExpression )
-            // InternalHenshin_text.g:8774:2: rulePrimaryExpression
+            // InternalHenshin_text.g:8849:1: ( rulePrimaryExpression )
+            // InternalHenshin_text.g:8850:2: rulePrimaryExpression
             {
              before(grammarAccess.getMulOrDivExpressionAccess().getPrimaryExpressionParserRuleCall_0()); 
             pushFollow(FOLLOW_2);
@@ -27349,14 +27635,14 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__Group__1"
-    // InternalHenshin_text.g:8783:1: rule__MulOrDivExpression__Group__1 : rule__MulOrDivExpression__Group__1__Impl ;
+    // InternalHenshin_text.g:8859:1: rule__MulOrDivExpression__Group__1 : rule__MulOrDivExpression__Group__1__Impl ;
     public final void rule__MulOrDivExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8787:1: ( rule__MulOrDivExpression__Group__1__Impl )
-            // InternalHenshin_text.g:8788:2: rule__MulOrDivExpression__Group__1__Impl
+            // InternalHenshin_text.g:8863:1: ( rule__MulOrDivExpression__Group__1__Impl )
+            // InternalHenshin_text.g:8864:2: rule__MulOrDivExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__MulOrDivExpression__Group__1__Impl();
@@ -27382,35 +27668,35 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__Group__1__Impl"
-    // InternalHenshin_text.g:8794:1: rule__MulOrDivExpression__Group__1__Impl : ( ( rule__MulOrDivExpression__Group_1__0 )* ) ;
+    // InternalHenshin_text.g:8870:1: rule__MulOrDivExpression__Group__1__Impl : ( ( rule__MulOrDivExpression__Group_1__0 )* ) ;
     public final void rule__MulOrDivExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8798:1: ( ( ( rule__MulOrDivExpression__Group_1__0 )* ) )
-            // InternalHenshin_text.g:8799:1: ( ( rule__MulOrDivExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8874:1: ( ( ( rule__MulOrDivExpression__Group_1__0 )* ) )
+            // InternalHenshin_text.g:8875:1: ( ( rule__MulOrDivExpression__Group_1__0 )* )
             {
-            // InternalHenshin_text.g:8799:1: ( ( rule__MulOrDivExpression__Group_1__0 )* )
-            // InternalHenshin_text.g:8800:2: ( rule__MulOrDivExpression__Group_1__0 )*
+            // InternalHenshin_text.g:8875:1: ( ( rule__MulOrDivExpression__Group_1__0 )* )
+            // InternalHenshin_text.g:8876:2: ( rule__MulOrDivExpression__Group_1__0 )*
             {
              before(grammarAccess.getMulOrDivExpressionAccess().getGroup_1()); 
-            // InternalHenshin_text.g:8801:2: ( rule__MulOrDivExpression__Group_1__0 )*
-            loop66:
+            // InternalHenshin_text.g:8877:2: ( rule__MulOrDivExpression__Group_1__0 )*
+            loop68:
             do {
-                int alt66=2;
-                int LA66_0 = input.LA(1);
+                int alt68=2;
+                int LA68_0 = input.LA(1);
 
-                if ( ((LA66_0>=28 && LA66_0<=29)) ) {
-                    alt66=1;
+                if ( ((LA68_0>=28 && LA68_0<=29)) ) {
+                    alt68=1;
                 }
 
 
-                switch (alt66) {
+                switch (alt68) {
             	case 1 :
-            	    // InternalHenshin_text.g:8801:3: rule__MulOrDivExpression__Group_1__0
+            	    // InternalHenshin_text.g:8877:3: rule__MulOrDivExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_60);
+            	    pushFollow(FOLLOW_62);
             	    rule__MulOrDivExpression__Group_1__0();
 
             	    state._fsp--;
@@ -27420,7 +27706,7 @@
             	    break;
 
             	default :
-            	    break loop66;
+            	    break loop68;
                 }
             } while (true);
 
@@ -27447,16 +27733,16 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__Group_1__0"
-    // InternalHenshin_text.g:8810:1: rule__MulOrDivExpression__Group_1__0 : rule__MulOrDivExpression__Group_1__0__Impl rule__MulOrDivExpression__Group_1__1 ;
+    // InternalHenshin_text.g:8886:1: rule__MulOrDivExpression__Group_1__0 : rule__MulOrDivExpression__Group_1__0__Impl rule__MulOrDivExpression__Group_1__1 ;
     public final void rule__MulOrDivExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8814:1: ( rule__MulOrDivExpression__Group_1__0__Impl rule__MulOrDivExpression__Group_1__1 )
-            // InternalHenshin_text.g:8815:2: rule__MulOrDivExpression__Group_1__0__Impl rule__MulOrDivExpression__Group_1__1
+            // InternalHenshin_text.g:8890:1: ( rule__MulOrDivExpression__Group_1__0__Impl rule__MulOrDivExpression__Group_1__1 )
+            // InternalHenshin_text.g:8891:2: rule__MulOrDivExpression__Group_1__0__Impl rule__MulOrDivExpression__Group_1__1
             {
-            pushFollow(FOLLOW_59);
+            pushFollow(FOLLOW_61);
             rule__MulOrDivExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -27485,21 +27771,21 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__Group_1__0__Impl"
-    // InternalHenshin_text.g:8822:1: rule__MulOrDivExpression__Group_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:8898:1: rule__MulOrDivExpression__Group_1__0__Impl : ( () ) ;
     public final void rule__MulOrDivExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8826:1: ( ( () ) )
-            // InternalHenshin_text.g:8827:1: ( () )
+            // InternalHenshin_text.g:8902:1: ( ( () ) )
+            // InternalHenshin_text.g:8903:1: ( () )
             {
-            // InternalHenshin_text.g:8827:1: ( () )
-            // InternalHenshin_text.g:8828:2: ()
+            // InternalHenshin_text.g:8903:1: ( () )
+            // InternalHenshin_text.g:8904:2: ()
             {
              before(grammarAccess.getMulOrDivExpressionAccess().getMulOrDivExpressionLeftAction_1_0()); 
-            // InternalHenshin_text.g:8829:2: ()
-            // InternalHenshin_text.g:8829:3: 
+            // InternalHenshin_text.g:8905:2: ()
+            // InternalHenshin_text.g:8905:3: 
             {
             }
 
@@ -27522,16 +27808,16 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__Group_1__1"
-    // InternalHenshin_text.g:8837:1: rule__MulOrDivExpression__Group_1__1 : rule__MulOrDivExpression__Group_1__1__Impl rule__MulOrDivExpression__Group_1__2 ;
+    // InternalHenshin_text.g:8913:1: rule__MulOrDivExpression__Group_1__1 : rule__MulOrDivExpression__Group_1__1__Impl rule__MulOrDivExpression__Group_1__2 ;
     public final void rule__MulOrDivExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8841:1: ( rule__MulOrDivExpression__Group_1__1__Impl rule__MulOrDivExpression__Group_1__2 )
-            // InternalHenshin_text.g:8842:2: rule__MulOrDivExpression__Group_1__1__Impl rule__MulOrDivExpression__Group_1__2
+            // InternalHenshin_text.g:8917:1: ( rule__MulOrDivExpression__Group_1__1__Impl rule__MulOrDivExpression__Group_1__2 )
+            // InternalHenshin_text.g:8918:2: rule__MulOrDivExpression__Group_1__1__Impl rule__MulOrDivExpression__Group_1__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__MulOrDivExpression__Group_1__1__Impl();
 
             state._fsp--;
@@ -27560,21 +27846,21 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__Group_1__1__Impl"
-    // InternalHenshin_text.g:8849:1: rule__MulOrDivExpression__Group_1__1__Impl : ( ( rule__MulOrDivExpression__OpAssignment_1_1 ) ) ;
+    // InternalHenshin_text.g:8925:1: rule__MulOrDivExpression__Group_1__1__Impl : ( ( rule__MulOrDivExpression__OpAssignment_1_1 ) ) ;
     public final void rule__MulOrDivExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8853:1: ( ( ( rule__MulOrDivExpression__OpAssignment_1_1 ) ) )
-            // InternalHenshin_text.g:8854:1: ( ( rule__MulOrDivExpression__OpAssignment_1_1 ) )
+            // InternalHenshin_text.g:8929:1: ( ( ( rule__MulOrDivExpression__OpAssignment_1_1 ) ) )
+            // InternalHenshin_text.g:8930:1: ( ( rule__MulOrDivExpression__OpAssignment_1_1 ) )
             {
-            // InternalHenshin_text.g:8854:1: ( ( rule__MulOrDivExpression__OpAssignment_1_1 ) )
-            // InternalHenshin_text.g:8855:2: ( rule__MulOrDivExpression__OpAssignment_1_1 )
+            // InternalHenshin_text.g:8930:1: ( ( rule__MulOrDivExpression__OpAssignment_1_1 ) )
+            // InternalHenshin_text.g:8931:2: ( rule__MulOrDivExpression__OpAssignment_1_1 )
             {
              before(grammarAccess.getMulOrDivExpressionAccess().getOpAssignment_1_1()); 
-            // InternalHenshin_text.g:8856:2: ( rule__MulOrDivExpression__OpAssignment_1_1 )
-            // InternalHenshin_text.g:8856:3: rule__MulOrDivExpression__OpAssignment_1_1
+            // InternalHenshin_text.g:8932:2: ( rule__MulOrDivExpression__OpAssignment_1_1 )
+            // InternalHenshin_text.g:8932:3: rule__MulOrDivExpression__OpAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__MulOrDivExpression__OpAssignment_1_1();
@@ -27607,14 +27893,14 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__Group_1__2"
-    // InternalHenshin_text.g:8864:1: rule__MulOrDivExpression__Group_1__2 : rule__MulOrDivExpression__Group_1__2__Impl ;
+    // InternalHenshin_text.g:8940:1: rule__MulOrDivExpression__Group_1__2 : rule__MulOrDivExpression__Group_1__2__Impl ;
     public final void rule__MulOrDivExpression__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8868:1: ( rule__MulOrDivExpression__Group_1__2__Impl )
-            // InternalHenshin_text.g:8869:2: rule__MulOrDivExpression__Group_1__2__Impl
+            // InternalHenshin_text.g:8944:1: ( rule__MulOrDivExpression__Group_1__2__Impl )
+            // InternalHenshin_text.g:8945:2: rule__MulOrDivExpression__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__MulOrDivExpression__Group_1__2__Impl();
@@ -27640,21 +27926,21 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__Group_1__2__Impl"
-    // InternalHenshin_text.g:8875:1: rule__MulOrDivExpression__Group_1__2__Impl : ( ( rule__MulOrDivExpression__RightAssignment_1_2 ) ) ;
+    // InternalHenshin_text.g:8951:1: rule__MulOrDivExpression__Group_1__2__Impl : ( ( rule__MulOrDivExpression__RightAssignment_1_2 ) ) ;
     public final void rule__MulOrDivExpression__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8879:1: ( ( ( rule__MulOrDivExpression__RightAssignment_1_2 ) ) )
-            // InternalHenshin_text.g:8880:1: ( ( rule__MulOrDivExpression__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:8955:1: ( ( ( rule__MulOrDivExpression__RightAssignment_1_2 ) ) )
+            // InternalHenshin_text.g:8956:1: ( ( rule__MulOrDivExpression__RightAssignment_1_2 ) )
             {
-            // InternalHenshin_text.g:8880:1: ( ( rule__MulOrDivExpression__RightAssignment_1_2 ) )
-            // InternalHenshin_text.g:8881:2: ( rule__MulOrDivExpression__RightAssignment_1_2 )
+            // InternalHenshin_text.g:8956:1: ( ( rule__MulOrDivExpression__RightAssignment_1_2 ) )
+            // InternalHenshin_text.g:8957:2: ( rule__MulOrDivExpression__RightAssignment_1_2 )
             {
              before(grammarAccess.getMulOrDivExpressionAccess().getRightAssignment_1_2()); 
-            // InternalHenshin_text.g:8882:2: ( rule__MulOrDivExpression__RightAssignment_1_2 )
-            // InternalHenshin_text.g:8882:3: rule__MulOrDivExpression__RightAssignment_1_2
+            // InternalHenshin_text.g:8958:2: ( rule__MulOrDivExpression__RightAssignment_1_2 )
+            // InternalHenshin_text.g:8958:3: rule__MulOrDivExpression__RightAssignment_1_2
             {
             pushFollow(FOLLOW_2);
             rule__MulOrDivExpression__RightAssignment_1_2();
@@ -27687,14 +27973,14 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_0__0"
-    // InternalHenshin_text.g:8891:1: rule__PrimaryExpression__Group_0__0 : rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1 ;
+    // InternalHenshin_text.g:8967:1: rule__PrimaryExpression__Group_0__0 : rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1 ;
     public final void rule__PrimaryExpression__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8895:1: ( rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1 )
-            // InternalHenshin_text.g:8896:2: rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1
+            // InternalHenshin_text.g:8971:1: ( rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1 )
+            // InternalHenshin_text.g:8972:2: rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1
             {
             pushFollow(FOLLOW_10);
             rule__PrimaryExpression__Group_0__0__Impl();
@@ -27725,21 +28011,21 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_0__0__Impl"
-    // InternalHenshin_text.g:8903:1: rule__PrimaryExpression__Group_0__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:8979:1: rule__PrimaryExpression__Group_0__0__Impl : ( () ) ;
     public final void rule__PrimaryExpression__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8907:1: ( ( () ) )
-            // InternalHenshin_text.g:8908:1: ( () )
+            // InternalHenshin_text.g:8983:1: ( ( () ) )
+            // InternalHenshin_text.g:8984:1: ( () )
             {
-            // InternalHenshin_text.g:8908:1: ( () )
-            // InternalHenshin_text.g:8909:2: ()
+            // InternalHenshin_text.g:8984:1: ( () )
+            // InternalHenshin_text.g:8985:2: ()
             {
              before(grammarAccess.getPrimaryExpressionAccess().getBracketExpressionAction_0_0()); 
-            // InternalHenshin_text.g:8910:2: ()
-            // InternalHenshin_text.g:8910:3: 
+            // InternalHenshin_text.g:8986:2: ()
+            // InternalHenshin_text.g:8986:3: 
             {
             }
 
@@ -27762,16 +28048,16 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_0__1"
-    // InternalHenshin_text.g:8918:1: rule__PrimaryExpression__Group_0__1 : rule__PrimaryExpression__Group_0__1__Impl rule__PrimaryExpression__Group_0__2 ;
+    // InternalHenshin_text.g:8994:1: rule__PrimaryExpression__Group_0__1 : rule__PrimaryExpression__Group_0__1__Impl rule__PrimaryExpression__Group_0__2 ;
     public final void rule__PrimaryExpression__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8922:1: ( rule__PrimaryExpression__Group_0__1__Impl rule__PrimaryExpression__Group_0__2 )
-            // InternalHenshin_text.g:8923:2: rule__PrimaryExpression__Group_0__1__Impl rule__PrimaryExpression__Group_0__2
+            // InternalHenshin_text.g:8998:1: ( rule__PrimaryExpression__Group_0__1__Impl rule__PrimaryExpression__Group_0__2 )
+            // InternalHenshin_text.g:8999:2: rule__PrimaryExpression__Group_0__1__Impl rule__PrimaryExpression__Group_0__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__PrimaryExpression__Group_0__1__Impl();
 
             state._fsp--;
@@ -27800,20 +28086,20 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_0__1__Impl"
-    // InternalHenshin_text.g:8930:1: rule__PrimaryExpression__Group_0__1__Impl : ( '(' ) ;
+    // InternalHenshin_text.g:9006:1: rule__PrimaryExpression__Group_0__1__Impl : ( '(' ) ;
     public final void rule__PrimaryExpression__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8934:1: ( ( '(' ) )
-            // InternalHenshin_text.g:8935:1: ( '(' )
+            // InternalHenshin_text.g:9010:1: ( ( '(' ) )
+            // InternalHenshin_text.g:9011:1: ( '(' )
             {
-            // InternalHenshin_text.g:8935:1: ( '(' )
-            // InternalHenshin_text.g:8936:2: '('
+            // InternalHenshin_text.g:9011:1: ( '(' )
+            // InternalHenshin_text.g:9012:2: '('
             {
              before(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_0_1()); 
-            match(input,66,FOLLOW_2); 
+            match(input,70,FOLLOW_2); 
              after(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_0_1()); 
 
             }
@@ -27837,16 +28123,16 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_0__2"
-    // InternalHenshin_text.g:8945:1: rule__PrimaryExpression__Group_0__2 : rule__PrimaryExpression__Group_0__2__Impl rule__PrimaryExpression__Group_0__3 ;
+    // InternalHenshin_text.g:9021:1: rule__PrimaryExpression__Group_0__2 : rule__PrimaryExpression__Group_0__2__Impl rule__PrimaryExpression__Group_0__3 ;
     public final void rule__PrimaryExpression__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8949:1: ( rule__PrimaryExpression__Group_0__2__Impl rule__PrimaryExpression__Group_0__3 )
-            // InternalHenshin_text.g:8950:2: rule__PrimaryExpression__Group_0__2__Impl rule__PrimaryExpression__Group_0__3
+            // InternalHenshin_text.g:9025:1: ( rule__PrimaryExpression__Group_0__2__Impl rule__PrimaryExpression__Group_0__3 )
+            // InternalHenshin_text.g:9026:2: rule__PrimaryExpression__Group_0__2__Impl rule__PrimaryExpression__Group_0__3
             {
-            pushFollow(FOLLOW_28);
+            pushFollow(FOLLOW_29);
             rule__PrimaryExpression__Group_0__2__Impl();
 
             state._fsp--;
@@ -27875,21 +28161,21 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_0__2__Impl"
-    // InternalHenshin_text.g:8957:1: rule__PrimaryExpression__Group_0__2__Impl : ( ( rule__PrimaryExpression__ExpressionAssignment_0_2 ) ) ;
+    // InternalHenshin_text.g:9033:1: rule__PrimaryExpression__Group_0__2__Impl : ( ( rule__PrimaryExpression__ExpressionAssignment_0_2 ) ) ;
     public final void rule__PrimaryExpression__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8961:1: ( ( ( rule__PrimaryExpression__ExpressionAssignment_0_2 ) ) )
-            // InternalHenshin_text.g:8962:1: ( ( rule__PrimaryExpression__ExpressionAssignment_0_2 ) )
+            // InternalHenshin_text.g:9037:1: ( ( ( rule__PrimaryExpression__ExpressionAssignment_0_2 ) ) )
+            // InternalHenshin_text.g:9038:1: ( ( rule__PrimaryExpression__ExpressionAssignment_0_2 ) )
             {
-            // InternalHenshin_text.g:8962:1: ( ( rule__PrimaryExpression__ExpressionAssignment_0_2 ) )
-            // InternalHenshin_text.g:8963:2: ( rule__PrimaryExpression__ExpressionAssignment_0_2 )
+            // InternalHenshin_text.g:9038:1: ( ( rule__PrimaryExpression__ExpressionAssignment_0_2 ) )
+            // InternalHenshin_text.g:9039:2: ( rule__PrimaryExpression__ExpressionAssignment_0_2 )
             {
              before(grammarAccess.getPrimaryExpressionAccess().getExpressionAssignment_0_2()); 
-            // InternalHenshin_text.g:8964:2: ( rule__PrimaryExpression__ExpressionAssignment_0_2 )
-            // InternalHenshin_text.g:8964:3: rule__PrimaryExpression__ExpressionAssignment_0_2
+            // InternalHenshin_text.g:9040:2: ( rule__PrimaryExpression__ExpressionAssignment_0_2 )
+            // InternalHenshin_text.g:9040:3: rule__PrimaryExpression__ExpressionAssignment_0_2
             {
             pushFollow(FOLLOW_2);
             rule__PrimaryExpression__ExpressionAssignment_0_2();
@@ -27922,14 +28208,14 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_0__3"
-    // InternalHenshin_text.g:8972:1: rule__PrimaryExpression__Group_0__3 : rule__PrimaryExpression__Group_0__3__Impl ;
+    // InternalHenshin_text.g:9048:1: rule__PrimaryExpression__Group_0__3 : rule__PrimaryExpression__Group_0__3__Impl ;
     public final void rule__PrimaryExpression__Group_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8976:1: ( rule__PrimaryExpression__Group_0__3__Impl )
-            // InternalHenshin_text.g:8977:2: rule__PrimaryExpression__Group_0__3__Impl
+            // InternalHenshin_text.g:9052:1: ( rule__PrimaryExpression__Group_0__3__Impl )
+            // InternalHenshin_text.g:9053:2: rule__PrimaryExpression__Group_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PrimaryExpression__Group_0__3__Impl();
@@ -27955,20 +28241,20 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_0__3__Impl"
-    // InternalHenshin_text.g:8983:1: rule__PrimaryExpression__Group_0__3__Impl : ( ')' ) ;
+    // InternalHenshin_text.g:9059:1: rule__PrimaryExpression__Group_0__3__Impl : ( ')' ) ;
     public final void rule__PrimaryExpression__Group_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:8987:1: ( ( ')' ) )
-            // InternalHenshin_text.g:8988:1: ( ')' )
+            // InternalHenshin_text.g:9063:1: ( ( ')' ) )
+            // InternalHenshin_text.g:9064:1: ( ')' )
             {
-            // InternalHenshin_text.g:8988:1: ( ')' )
-            // InternalHenshin_text.g:8989:2: ')'
+            // InternalHenshin_text.g:9064:1: ( ')' )
+            // InternalHenshin_text.g:9065:2: ')'
             {
              before(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_0_3()); 
-            match(input,67,FOLLOW_2); 
+            match(input,71,FOLLOW_2); 
              after(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_0_3()); 
 
             }
@@ -27992,16 +28278,16 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_1__0"
-    // InternalHenshin_text.g:8999:1: rule__PrimaryExpression__Group_1__0 : rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1 ;
+    // InternalHenshin_text.g:9075:1: rule__PrimaryExpression__Group_1__0 : rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1 ;
     public final void rule__PrimaryExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9003:1: ( rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1 )
-            // InternalHenshin_text.g:9004:2: rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1
+            // InternalHenshin_text.g:9079:1: ( rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1 )
+            // InternalHenshin_text.g:9080:2: rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1
             {
-            pushFollow(FOLLOW_41);
+            pushFollow(FOLLOW_42);
             rule__PrimaryExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -28030,21 +28316,21 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_1__0__Impl"
-    // InternalHenshin_text.g:9011:1: rule__PrimaryExpression__Group_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:9087:1: rule__PrimaryExpression__Group_1__0__Impl : ( () ) ;
     public final void rule__PrimaryExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9015:1: ( ( () ) )
-            // InternalHenshin_text.g:9016:1: ( () )
+            // InternalHenshin_text.g:9091:1: ( ( () ) )
+            // InternalHenshin_text.g:9092:1: ( () )
             {
-            // InternalHenshin_text.g:9016:1: ( () )
-            // InternalHenshin_text.g:9017:2: ()
+            // InternalHenshin_text.g:9092:1: ( () )
+            // InternalHenshin_text.g:9093:2: ()
             {
              before(grammarAccess.getPrimaryExpressionAccess().getNotExpressionAction_1_0()); 
-            // InternalHenshin_text.g:9018:2: ()
-            // InternalHenshin_text.g:9018:3: 
+            // InternalHenshin_text.g:9094:2: ()
+            // InternalHenshin_text.g:9094:3: 
             {
             }
 
@@ -28067,16 +28353,16 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_1__1"
-    // InternalHenshin_text.g:9026:1: rule__PrimaryExpression__Group_1__1 : rule__PrimaryExpression__Group_1__1__Impl rule__PrimaryExpression__Group_1__2 ;
+    // InternalHenshin_text.g:9102:1: rule__PrimaryExpression__Group_1__1 : rule__PrimaryExpression__Group_1__1__Impl rule__PrimaryExpression__Group_1__2 ;
     public final void rule__PrimaryExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9030:1: ( rule__PrimaryExpression__Group_1__1__Impl rule__PrimaryExpression__Group_1__2 )
-            // InternalHenshin_text.g:9031:2: rule__PrimaryExpression__Group_1__1__Impl rule__PrimaryExpression__Group_1__2
+            // InternalHenshin_text.g:9106:1: ( rule__PrimaryExpression__Group_1__1__Impl rule__PrimaryExpression__Group_1__2 )
+            // InternalHenshin_text.g:9107:2: rule__PrimaryExpression__Group_1__1__Impl rule__PrimaryExpression__Group_1__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__PrimaryExpression__Group_1__1__Impl();
 
             state._fsp--;
@@ -28105,20 +28391,20 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_1__1__Impl"
-    // InternalHenshin_text.g:9038:1: rule__PrimaryExpression__Group_1__1__Impl : ( '!' ) ;
+    // InternalHenshin_text.g:9114:1: rule__PrimaryExpression__Group_1__1__Impl : ( '!' ) ;
     public final void rule__PrimaryExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9042:1: ( ( '!' ) )
-            // InternalHenshin_text.g:9043:1: ( '!' )
+            // InternalHenshin_text.g:9118:1: ( ( '!' ) )
+            // InternalHenshin_text.g:9119:1: ( '!' )
             {
-            // InternalHenshin_text.g:9043:1: ( '!' )
-            // InternalHenshin_text.g:9044:2: '!'
+            // InternalHenshin_text.g:9119:1: ( '!' )
+            // InternalHenshin_text.g:9120:2: '!'
             {
              before(grammarAccess.getPrimaryExpressionAccess().getExclamationMarkKeyword_1_1()); 
-            match(input,89,FOLLOW_2); 
+            match(input,93,FOLLOW_2); 
              after(grammarAccess.getPrimaryExpressionAccess().getExclamationMarkKeyword_1_1()); 
 
             }
@@ -28142,14 +28428,14 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_1__2"
-    // InternalHenshin_text.g:9053:1: rule__PrimaryExpression__Group_1__2 : rule__PrimaryExpression__Group_1__2__Impl ;
+    // InternalHenshin_text.g:9129:1: rule__PrimaryExpression__Group_1__2 : rule__PrimaryExpression__Group_1__2__Impl ;
     public final void rule__PrimaryExpression__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9057:1: ( rule__PrimaryExpression__Group_1__2__Impl )
-            // InternalHenshin_text.g:9058:2: rule__PrimaryExpression__Group_1__2__Impl
+            // InternalHenshin_text.g:9133:1: ( rule__PrimaryExpression__Group_1__2__Impl )
+            // InternalHenshin_text.g:9134:2: rule__PrimaryExpression__Group_1__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__PrimaryExpression__Group_1__2__Impl();
@@ -28175,21 +28461,21 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__Group_1__2__Impl"
-    // InternalHenshin_text.g:9064:1: rule__PrimaryExpression__Group_1__2__Impl : ( ( rule__PrimaryExpression__ExpressionAssignment_1_2 ) ) ;
+    // InternalHenshin_text.g:9140:1: rule__PrimaryExpression__Group_1__2__Impl : ( ( rule__PrimaryExpression__ExpressionAssignment_1_2 ) ) ;
     public final void rule__PrimaryExpression__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9068:1: ( ( ( rule__PrimaryExpression__ExpressionAssignment_1_2 ) ) )
-            // InternalHenshin_text.g:9069:1: ( ( rule__PrimaryExpression__ExpressionAssignment_1_2 ) )
+            // InternalHenshin_text.g:9144:1: ( ( ( rule__PrimaryExpression__ExpressionAssignment_1_2 ) ) )
+            // InternalHenshin_text.g:9145:1: ( ( rule__PrimaryExpression__ExpressionAssignment_1_2 ) )
             {
-            // InternalHenshin_text.g:9069:1: ( ( rule__PrimaryExpression__ExpressionAssignment_1_2 ) )
-            // InternalHenshin_text.g:9070:2: ( rule__PrimaryExpression__ExpressionAssignment_1_2 )
+            // InternalHenshin_text.g:9145:1: ( ( rule__PrimaryExpression__ExpressionAssignment_1_2 ) )
+            // InternalHenshin_text.g:9146:2: ( rule__PrimaryExpression__ExpressionAssignment_1_2 )
             {
              before(grammarAccess.getPrimaryExpressionAccess().getExpressionAssignment_1_2()); 
-            // InternalHenshin_text.g:9071:2: ( rule__PrimaryExpression__ExpressionAssignment_1_2 )
-            // InternalHenshin_text.g:9071:3: rule__PrimaryExpression__ExpressionAssignment_1_2
+            // InternalHenshin_text.g:9147:2: ( rule__PrimaryExpression__ExpressionAssignment_1_2 )
+            // InternalHenshin_text.g:9147:3: rule__PrimaryExpression__ExpressionAssignment_1_2
             {
             pushFollow(FOLLOW_2);
             rule__PrimaryExpression__ExpressionAssignment_1_2();
@@ -28222,14 +28508,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_0__0"
-    // InternalHenshin_text.g:9080:1: rule__AtomicExpression__Group_0__0 : rule__AtomicExpression__Group_0__0__Impl rule__AtomicExpression__Group_0__1 ;
+    // InternalHenshin_text.g:9156:1: rule__AtomicExpression__Group_0__0 : rule__AtomicExpression__Group_0__0__Impl rule__AtomicExpression__Group_0__1 ;
     public final void rule__AtomicExpression__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9084:1: ( rule__AtomicExpression__Group_0__0__Impl rule__AtomicExpression__Group_0__1 )
-            // InternalHenshin_text.g:9085:2: rule__AtomicExpression__Group_0__0__Impl rule__AtomicExpression__Group_0__1
+            // InternalHenshin_text.g:9160:1: ( rule__AtomicExpression__Group_0__0__Impl rule__AtomicExpression__Group_0__1 )
+            // InternalHenshin_text.g:9161:2: rule__AtomicExpression__Group_0__0__Impl rule__AtomicExpression__Group_0__1
             {
             pushFollow(FOLLOW_7);
             rule__AtomicExpression__Group_0__0__Impl();
@@ -28260,21 +28546,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_0__0__Impl"
-    // InternalHenshin_text.g:9092:1: rule__AtomicExpression__Group_0__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:9168:1: rule__AtomicExpression__Group_0__0__Impl : ( () ) ;
     public final void rule__AtomicExpression__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9096:1: ( ( () ) )
-            // InternalHenshin_text.g:9097:1: ( () )
+            // InternalHenshin_text.g:9172:1: ( ( () ) )
+            // InternalHenshin_text.g:9173:1: ( () )
             {
-            // InternalHenshin_text.g:9097:1: ( () )
-            // InternalHenshin_text.g:9098:2: ()
+            // InternalHenshin_text.g:9173:1: ( () )
+            // InternalHenshin_text.g:9174:2: ()
             {
              before(grammarAccess.getAtomicExpressionAccess().getParameterValueAction_0_0()); 
-            // InternalHenshin_text.g:9099:2: ()
-            // InternalHenshin_text.g:9099:3: 
+            // InternalHenshin_text.g:9175:2: ()
+            // InternalHenshin_text.g:9175:3: 
             {
             }
 
@@ -28297,14 +28583,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_0__1"
-    // InternalHenshin_text.g:9107:1: rule__AtomicExpression__Group_0__1 : rule__AtomicExpression__Group_0__1__Impl ;
+    // InternalHenshin_text.g:9183:1: rule__AtomicExpression__Group_0__1 : rule__AtomicExpression__Group_0__1__Impl ;
     public final void rule__AtomicExpression__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9111:1: ( rule__AtomicExpression__Group_0__1__Impl )
-            // InternalHenshin_text.g:9112:2: rule__AtomicExpression__Group_0__1__Impl
+            // InternalHenshin_text.g:9187:1: ( rule__AtomicExpression__Group_0__1__Impl )
+            // InternalHenshin_text.g:9188:2: rule__AtomicExpression__Group_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__Group_0__1__Impl();
@@ -28330,21 +28616,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_0__1__Impl"
-    // InternalHenshin_text.g:9118:1: rule__AtomicExpression__Group_0__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_0_1 ) ) ;
+    // InternalHenshin_text.g:9194:1: rule__AtomicExpression__Group_0__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_0_1 ) ) ;
     public final void rule__AtomicExpression__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9122:1: ( ( ( rule__AtomicExpression__ValueAssignment_0_1 ) ) )
-            // InternalHenshin_text.g:9123:1: ( ( rule__AtomicExpression__ValueAssignment_0_1 ) )
+            // InternalHenshin_text.g:9198:1: ( ( ( rule__AtomicExpression__ValueAssignment_0_1 ) ) )
+            // InternalHenshin_text.g:9199:1: ( ( rule__AtomicExpression__ValueAssignment_0_1 ) )
             {
-            // InternalHenshin_text.g:9123:1: ( ( rule__AtomicExpression__ValueAssignment_0_1 ) )
-            // InternalHenshin_text.g:9124:2: ( rule__AtomicExpression__ValueAssignment_0_1 )
+            // InternalHenshin_text.g:9199:1: ( ( rule__AtomicExpression__ValueAssignment_0_1 ) )
+            // InternalHenshin_text.g:9200:2: ( rule__AtomicExpression__ValueAssignment_0_1 )
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueAssignment_0_1()); 
-            // InternalHenshin_text.g:9125:2: ( rule__AtomicExpression__ValueAssignment_0_1 )
-            // InternalHenshin_text.g:9125:3: rule__AtomicExpression__ValueAssignment_0_1
+            // InternalHenshin_text.g:9201:2: ( rule__AtomicExpression__ValueAssignment_0_1 )
+            // InternalHenshin_text.g:9201:3: rule__AtomicExpression__ValueAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__ValueAssignment_0_1();
@@ -28377,14 +28663,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1__0"
-    // InternalHenshin_text.g:9134:1: rule__AtomicExpression__Group_1__0 : rule__AtomicExpression__Group_1__0__Impl rule__AtomicExpression__Group_1__1 ;
+    // InternalHenshin_text.g:9210:1: rule__AtomicExpression__Group_1__0 : rule__AtomicExpression__Group_1__0__Impl rule__AtomicExpression__Group_1__1 ;
     public final void rule__AtomicExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9138:1: ( rule__AtomicExpression__Group_1__0__Impl rule__AtomicExpression__Group_1__1 )
-            // InternalHenshin_text.g:9139:2: rule__AtomicExpression__Group_1__0__Impl rule__AtomicExpression__Group_1__1
+            // InternalHenshin_text.g:9214:1: ( rule__AtomicExpression__Group_1__0__Impl rule__AtomicExpression__Group_1__1 )
+            // InternalHenshin_text.g:9215:2: rule__AtomicExpression__Group_1__0__Impl rule__AtomicExpression__Group_1__1
             {
             pushFollow(FOLLOW_7);
             rule__AtomicExpression__Group_1__0__Impl();
@@ -28415,21 +28701,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1__0__Impl"
-    // InternalHenshin_text.g:9146:1: rule__AtomicExpression__Group_1__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:9222:1: rule__AtomicExpression__Group_1__0__Impl : ( () ) ;
     public final void rule__AtomicExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9150:1: ( ( () ) )
-            // InternalHenshin_text.g:9151:1: ( () )
+            // InternalHenshin_text.g:9226:1: ( ( () ) )
+            // InternalHenshin_text.g:9227:1: ( () )
             {
-            // InternalHenshin_text.g:9151:1: ( () )
-            // InternalHenshin_text.g:9152:2: ()
+            // InternalHenshin_text.g:9227:1: ( () )
+            // InternalHenshin_text.g:9228:2: ()
             {
              before(grammarAccess.getAtomicExpressionAccess().getJavaClassValueAction_1_0()); 
-            // InternalHenshin_text.g:9153:2: ()
-            // InternalHenshin_text.g:9153:3: 
+            // InternalHenshin_text.g:9229:2: ()
+            // InternalHenshin_text.g:9229:3: 
             {
             }
 
@@ -28452,14 +28738,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1__1"
-    // InternalHenshin_text.g:9161:1: rule__AtomicExpression__Group_1__1 : rule__AtomicExpression__Group_1__1__Impl rule__AtomicExpression__Group_1__2 ;
+    // InternalHenshin_text.g:9237:1: rule__AtomicExpression__Group_1__1 : rule__AtomicExpression__Group_1__1__Impl rule__AtomicExpression__Group_1__2 ;
     public final void rule__AtomicExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9165:1: ( rule__AtomicExpression__Group_1__1__Impl rule__AtomicExpression__Group_1__2 )
-            // InternalHenshin_text.g:9166:2: rule__AtomicExpression__Group_1__1__Impl rule__AtomicExpression__Group_1__2
+            // InternalHenshin_text.g:9241:1: ( rule__AtomicExpression__Group_1__1__Impl rule__AtomicExpression__Group_1__2 )
+            // InternalHenshin_text.g:9242:2: rule__AtomicExpression__Group_1__1__Impl rule__AtomicExpression__Group_1__2
             {
             pushFollow(FOLLOW_10);
             rule__AtomicExpression__Group_1__1__Impl();
@@ -28490,21 +28776,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1__1__Impl"
-    // InternalHenshin_text.g:9173:1: rule__AtomicExpression__Group_1__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_1_1 ) ) ;
+    // InternalHenshin_text.g:9249:1: rule__AtomicExpression__Group_1__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_1_1 ) ) ;
     public final void rule__AtomicExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9177:1: ( ( ( rule__AtomicExpression__ValueAssignment_1_1 ) ) )
-            // InternalHenshin_text.g:9178:1: ( ( rule__AtomicExpression__ValueAssignment_1_1 ) )
+            // InternalHenshin_text.g:9253:1: ( ( ( rule__AtomicExpression__ValueAssignment_1_1 ) ) )
+            // InternalHenshin_text.g:9254:1: ( ( rule__AtomicExpression__ValueAssignment_1_1 ) )
             {
-            // InternalHenshin_text.g:9178:1: ( ( rule__AtomicExpression__ValueAssignment_1_1 ) )
-            // InternalHenshin_text.g:9179:2: ( rule__AtomicExpression__ValueAssignment_1_1 )
+            // InternalHenshin_text.g:9254:1: ( ( rule__AtomicExpression__ValueAssignment_1_1 ) )
+            // InternalHenshin_text.g:9255:2: ( rule__AtomicExpression__ValueAssignment_1_1 )
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueAssignment_1_1()); 
-            // InternalHenshin_text.g:9180:2: ( rule__AtomicExpression__ValueAssignment_1_1 )
-            // InternalHenshin_text.g:9180:3: rule__AtomicExpression__ValueAssignment_1_1
+            // InternalHenshin_text.g:9256:2: ( rule__AtomicExpression__ValueAssignment_1_1 )
+            // InternalHenshin_text.g:9256:3: rule__AtomicExpression__ValueAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__ValueAssignment_1_1();
@@ -28537,16 +28823,16 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1__2"
-    // InternalHenshin_text.g:9188:1: rule__AtomicExpression__Group_1__2 : rule__AtomicExpression__Group_1__2__Impl rule__AtomicExpression__Group_1__3 ;
+    // InternalHenshin_text.g:9264:1: rule__AtomicExpression__Group_1__2 : rule__AtomicExpression__Group_1__2__Impl rule__AtomicExpression__Group_1__3 ;
     public final void rule__AtomicExpression__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9192:1: ( rule__AtomicExpression__Group_1__2__Impl rule__AtomicExpression__Group_1__3 )
-            // InternalHenshin_text.g:9193:2: rule__AtomicExpression__Group_1__2__Impl rule__AtomicExpression__Group_1__3
+            // InternalHenshin_text.g:9268:1: ( rule__AtomicExpression__Group_1__2__Impl rule__AtomicExpression__Group_1__3 )
+            // InternalHenshin_text.g:9269:2: rule__AtomicExpression__Group_1__2__Impl rule__AtomicExpression__Group_1__3
             {
-            pushFollow(FOLLOW_61);
+            pushFollow(FOLLOW_63);
             rule__AtomicExpression__Group_1__2__Impl();
 
             state._fsp--;
@@ -28575,20 +28861,20 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1__2__Impl"
-    // InternalHenshin_text.g:9200:1: rule__AtomicExpression__Group_1__2__Impl : ( '(' ) ;
+    // InternalHenshin_text.g:9276:1: rule__AtomicExpression__Group_1__2__Impl : ( '(' ) ;
     public final void rule__AtomicExpression__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9204:1: ( ( '(' ) )
-            // InternalHenshin_text.g:9205:1: ( '(' )
+            // InternalHenshin_text.g:9280:1: ( ( '(' ) )
+            // InternalHenshin_text.g:9281:1: ( '(' )
             {
-            // InternalHenshin_text.g:9205:1: ( '(' )
-            // InternalHenshin_text.g:9206:2: '('
+            // InternalHenshin_text.g:9281:1: ( '(' )
+            // InternalHenshin_text.g:9282:2: '('
             {
              before(grammarAccess.getAtomicExpressionAccess().getLeftParenthesisKeyword_1_2()); 
-            match(input,66,FOLLOW_2); 
+            match(input,70,FOLLOW_2); 
              after(grammarAccess.getAtomicExpressionAccess().getLeftParenthesisKeyword_1_2()); 
 
             }
@@ -28612,16 +28898,16 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1__3"
-    // InternalHenshin_text.g:9215:1: rule__AtomicExpression__Group_1__3 : rule__AtomicExpression__Group_1__3__Impl rule__AtomicExpression__Group_1__4 ;
+    // InternalHenshin_text.g:9291:1: rule__AtomicExpression__Group_1__3 : rule__AtomicExpression__Group_1__3__Impl rule__AtomicExpression__Group_1__4 ;
     public final void rule__AtomicExpression__Group_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9219:1: ( rule__AtomicExpression__Group_1__3__Impl rule__AtomicExpression__Group_1__4 )
-            // InternalHenshin_text.g:9220:2: rule__AtomicExpression__Group_1__3__Impl rule__AtomicExpression__Group_1__4
+            // InternalHenshin_text.g:9295:1: ( rule__AtomicExpression__Group_1__3__Impl rule__AtomicExpression__Group_1__4 )
+            // InternalHenshin_text.g:9296:2: rule__AtomicExpression__Group_1__3__Impl rule__AtomicExpression__Group_1__4
             {
-            pushFollow(FOLLOW_61);
+            pushFollow(FOLLOW_63);
             rule__AtomicExpression__Group_1__3__Impl();
 
             state._fsp--;
@@ -28650,29 +28936,29 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1__3__Impl"
-    // InternalHenshin_text.g:9227:1: rule__AtomicExpression__Group_1__3__Impl : ( ( rule__AtomicExpression__Group_1_3__0 )? ) ;
+    // InternalHenshin_text.g:9303:1: rule__AtomicExpression__Group_1__3__Impl : ( ( rule__AtomicExpression__Group_1_3__0 )? ) ;
     public final void rule__AtomicExpression__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9231:1: ( ( ( rule__AtomicExpression__Group_1_3__0 )? ) )
-            // InternalHenshin_text.g:9232:1: ( ( rule__AtomicExpression__Group_1_3__0 )? )
+            // InternalHenshin_text.g:9307:1: ( ( ( rule__AtomicExpression__Group_1_3__0 )? ) )
+            // InternalHenshin_text.g:9308:1: ( ( rule__AtomicExpression__Group_1_3__0 )? )
             {
-            // InternalHenshin_text.g:9232:1: ( ( rule__AtomicExpression__Group_1_3__0 )? )
-            // InternalHenshin_text.g:9233:2: ( rule__AtomicExpression__Group_1_3__0 )?
+            // InternalHenshin_text.g:9308:1: ( ( rule__AtomicExpression__Group_1_3__0 )? )
+            // InternalHenshin_text.g:9309:2: ( rule__AtomicExpression__Group_1_3__0 )?
             {
              before(grammarAccess.getAtomicExpressionAccess().getGroup_1_3()); 
-            // InternalHenshin_text.g:9234:2: ( rule__AtomicExpression__Group_1_3__0 )?
-            int alt67=2;
-            int LA67_0 = input.LA(1);
+            // InternalHenshin_text.g:9310:2: ( rule__AtomicExpression__Group_1_3__0 )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
 
-            if ( ((LA67_0>=RULE_ID && LA67_0<=RULE_INT)||(LA67_0>=20 && LA67_0<=21)||LA67_0==66||LA67_0==89) ) {
-                alt67=1;
+            if ( ((LA69_0>=RULE_ID && LA69_0<=RULE_INT)||(LA69_0>=20 && LA69_0<=21)||LA69_0==70||LA69_0==93) ) {
+                alt69=1;
             }
-            switch (alt67) {
+            switch (alt69) {
                 case 1 :
-                    // InternalHenshin_text.g:9234:3: rule__AtomicExpression__Group_1_3__0
+                    // InternalHenshin_text.g:9310:3: rule__AtomicExpression__Group_1_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AtomicExpression__Group_1_3__0();
@@ -28708,14 +28994,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1__4"
-    // InternalHenshin_text.g:9242:1: rule__AtomicExpression__Group_1__4 : rule__AtomicExpression__Group_1__4__Impl ;
+    // InternalHenshin_text.g:9318:1: rule__AtomicExpression__Group_1__4 : rule__AtomicExpression__Group_1__4__Impl ;
     public final void rule__AtomicExpression__Group_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9246:1: ( rule__AtomicExpression__Group_1__4__Impl )
-            // InternalHenshin_text.g:9247:2: rule__AtomicExpression__Group_1__4__Impl
+            // InternalHenshin_text.g:9322:1: ( rule__AtomicExpression__Group_1__4__Impl )
+            // InternalHenshin_text.g:9323:2: rule__AtomicExpression__Group_1__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__Group_1__4__Impl();
@@ -28741,20 +29027,20 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1__4__Impl"
-    // InternalHenshin_text.g:9253:1: rule__AtomicExpression__Group_1__4__Impl : ( ')' ) ;
+    // InternalHenshin_text.g:9329:1: rule__AtomicExpression__Group_1__4__Impl : ( ')' ) ;
     public final void rule__AtomicExpression__Group_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9257:1: ( ( ')' ) )
-            // InternalHenshin_text.g:9258:1: ( ')' )
+            // InternalHenshin_text.g:9333:1: ( ( ')' ) )
+            // InternalHenshin_text.g:9334:1: ( ')' )
             {
-            // InternalHenshin_text.g:9258:1: ( ')' )
-            // InternalHenshin_text.g:9259:2: ')'
+            // InternalHenshin_text.g:9334:1: ( ')' )
+            // InternalHenshin_text.g:9335:2: ')'
             {
              before(grammarAccess.getAtomicExpressionAccess().getRightParenthesisKeyword_1_4()); 
-            match(input,67,FOLLOW_2); 
+            match(input,71,FOLLOW_2); 
              after(grammarAccess.getAtomicExpressionAccess().getRightParenthesisKeyword_1_4()); 
 
             }
@@ -28778,14 +29064,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1_3__0"
-    // InternalHenshin_text.g:9269:1: rule__AtomicExpression__Group_1_3__0 : rule__AtomicExpression__Group_1_3__0__Impl rule__AtomicExpression__Group_1_3__1 ;
+    // InternalHenshin_text.g:9345:1: rule__AtomicExpression__Group_1_3__0 : rule__AtomicExpression__Group_1_3__0__Impl rule__AtomicExpression__Group_1_3__1 ;
     public final void rule__AtomicExpression__Group_1_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9273:1: ( rule__AtomicExpression__Group_1_3__0__Impl rule__AtomicExpression__Group_1_3__1 )
-            // InternalHenshin_text.g:9274:2: rule__AtomicExpression__Group_1_3__0__Impl rule__AtomicExpression__Group_1_3__1
+            // InternalHenshin_text.g:9349:1: ( rule__AtomicExpression__Group_1_3__0__Impl rule__AtomicExpression__Group_1_3__1 )
+            // InternalHenshin_text.g:9350:2: rule__AtomicExpression__Group_1_3__0__Impl rule__AtomicExpression__Group_1_3__1
             {
             pushFollow(FOLLOW_16);
             rule__AtomicExpression__Group_1_3__0__Impl();
@@ -28816,21 +29102,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1_3__0__Impl"
-    // InternalHenshin_text.g:9281:1: rule__AtomicExpression__Group_1_3__0__Impl : ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 ) ) ;
+    // InternalHenshin_text.g:9357:1: rule__AtomicExpression__Group_1_3__0__Impl : ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 ) ) ;
     public final void rule__AtomicExpression__Group_1_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9285:1: ( ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 ) ) )
-            // InternalHenshin_text.g:9286:1: ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 ) )
+            // InternalHenshin_text.g:9361:1: ( ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 ) ) )
+            // InternalHenshin_text.g:9362:1: ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 ) )
             {
-            // InternalHenshin_text.g:9286:1: ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 ) )
-            // InternalHenshin_text.g:9287:2: ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 )
+            // InternalHenshin_text.g:9362:1: ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 ) )
+            // InternalHenshin_text.g:9363:2: ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 )
             {
              before(grammarAccess.getAtomicExpressionAccess().getJavaParameterAssignment_1_3_0()); 
-            // InternalHenshin_text.g:9288:2: ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 )
-            // InternalHenshin_text.g:9288:3: rule__AtomicExpression__JavaParameterAssignment_1_3_0
+            // InternalHenshin_text.g:9364:2: ( rule__AtomicExpression__JavaParameterAssignment_1_3_0 )
+            // InternalHenshin_text.g:9364:3: rule__AtomicExpression__JavaParameterAssignment_1_3_0
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__JavaParameterAssignment_1_3_0();
@@ -28863,14 +29149,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1_3__1"
-    // InternalHenshin_text.g:9296:1: rule__AtomicExpression__Group_1_3__1 : rule__AtomicExpression__Group_1_3__1__Impl ;
+    // InternalHenshin_text.g:9372:1: rule__AtomicExpression__Group_1_3__1 : rule__AtomicExpression__Group_1_3__1__Impl ;
     public final void rule__AtomicExpression__Group_1_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9300:1: ( rule__AtomicExpression__Group_1_3__1__Impl )
-            // InternalHenshin_text.g:9301:2: rule__AtomicExpression__Group_1_3__1__Impl
+            // InternalHenshin_text.g:9376:1: ( rule__AtomicExpression__Group_1_3__1__Impl )
+            // InternalHenshin_text.g:9377:2: rule__AtomicExpression__Group_1_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__Group_1_3__1__Impl();
@@ -28896,33 +29182,33 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1_3__1__Impl"
-    // InternalHenshin_text.g:9307:1: rule__AtomicExpression__Group_1_3__1__Impl : ( ( rule__AtomicExpression__Group_1_3_1__0 )* ) ;
+    // InternalHenshin_text.g:9383:1: rule__AtomicExpression__Group_1_3__1__Impl : ( ( rule__AtomicExpression__Group_1_3_1__0 )* ) ;
     public final void rule__AtomicExpression__Group_1_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9311:1: ( ( ( rule__AtomicExpression__Group_1_3_1__0 )* ) )
-            // InternalHenshin_text.g:9312:1: ( ( rule__AtomicExpression__Group_1_3_1__0 )* )
+            // InternalHenshin_text.g:9387:1: ( ( ( rule__AtomicExpression__Group_1_3_1__0 )* ) )
+            // InternalHenshin_text.g:9388:1: ( ( rule__AtomicExpression__Group_1_3_1__0 )* )
             {
-            // InternalHenshin_text.g:9312:1: ( ( rule__AtomicExpression__Group_1_3_1__0 )* )
-            // InternalHenshin_text.g:9313:2: ( rule__AtomicExpression__Group_1_3_1__0 )*
+            // InternalHenshin_text.g:9388:1: ( ( rule__AtomicExpression__Group_1_3_1__0 )* )
+            // InternalHenshin_text.g:9389:2: ( rule__AtomicExpression__Group_1_3_1__0 )*
             {
              before(grammarAccess.getAtomicExpressionAccess().getGroup_1_3_1()); 
-            // InternalHenshin_text.g:9314:2: ( rule__AtomicExpression__Group_1_3_1__0 )*
-            loop68:
+            // InternalHenshin_text.g:9390:2: ( rule__AtomicExpression__Group_1_3_1__0 )*
+            loop70:
             do {
-                int alt68=2;
-                int LA68_0 = input.LA(1);
+                int alt70=2;
+                int LA70_0 = input.LA(1);
 
-                if ( (LA68_0==70) ) {
-                    alt68=1;
+                if ( (LA70_0==74) ) {
+                    alt70=1;
                 }
 
 
-                switch (alt68) {
+                switch (alt70) {
             	case 1 :
-            	    // InternalHenshin_text.g:9314:3: rule__AtomicExpression__Group_1_3_1__0
+            	    // InternalHenshin_text.g:9390:3: rule__AtomicExpression__Group_1_3_1__0
             	    {
             	    pushFollow(FOLLOW_17);
             	    rule__AtomicExpression__Group_1_3_1__0();
@@ -28934,7 +29220,7 @@
             	    break;
 
             	default :
-            	    break loop68;
+            	    break loop70;
                 }
             } while (true);
 
@@ -28961,16 +29247,16 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1_3_1__0"
-    // InternalHenshin_text.g:9323:1: rule__AtomicExpression__Group_1_3_1__0 : rule__AtomicExpression__Group_1_3_1__0__Impl rule__AtomicExpression__Group_1_3_1__1 ;
+    // InternalHenshin_text.g:9399:1: rule__AtomicExpression__Group_1_3_1__0 : rule__AtomicExpression__Group_1_3_1__0__Impl rule__AtomicExpression__Group_1_3_1__1 ;
     public final void rule__AtomicExpression__Group_1_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9327:1: ( rule__AtomicExpression__Group_1_3_1__0__Impl rule__AtomicExpression__Group_1_3_1__1 )
-            // InternalHenshin_text.g:9328:2: rule__AtomicExpression__Group_1_3_1__0__Impl rule__AtomicExpression__Group_1_3_1__1
+            // InternalHenshin_text.g:9403:1: ( rule__AtomicExpression__Group_1_3_1__0__Impl rule__AtomicExpression__Group_1_3_1__1 )
+            // InternalHenshin_text.g:9404:2: rule__AtomicExpression__Group_1_3_1__0__Impl rule__AtomicExpression__Group_1_3_1__1
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__AtomicExpression__Group_1_3_1__0__Impl();
 
             state._fsp--;
@@ -28999,20 +29285,20 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1_3_1__0__Impl"
-    // InternalHenshin_text.g:9335:1: rule__AtomicExpression__Group_1_3_1__0__Impl : ( ',' ) ;
+    // InternalHenshin_text.g:9411:1: rule__AtomicExpression__Group_1_3_1__0__Impl : ( ',' ) ;
     public final void rule__AtomicExpression__Group_1_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9339:1: ( ( ',' ) )
-            // InternalHenshin_text.g:9340:1: ( ',' )
+            // InternalHenshin_text.g:9415:1: ( ( ',' ) )
+            // InternalHenshin_text.g:9416:1: ( ',' )
             {
-            // InternalHenshin_text.g:9340:1: ( ',' )
-            // InternalHenshin_text.g:9341:2: ','
+            // InternalHenshin_text.g:9416:1: ( ',' )
+            // InternalHenshin_text.g:9417:2: ','
             {
              before(grammarAccess.getAtomicExpressionAccess().getCommaKeyword_1_3_1_0()); 
-            match(input,70,FOLLOW_2); 
+            match(input,74,FOLLOW_2); 
              after(grammarAccess.getAtomicExpressionAccess().getCommaKeyword_1_3_1_0()); 
 
             }
@@ -29036,14 +29322,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1_3_1__1"
-    // InternalHenshin_text.g:9350:1: rule__AtomicExpression__Group_1_3_1__1 : rule__AtomicExpression__Group_1_3_1__1__Impl ;
+    // InternalHenshin_text.g:9426:1: rule__AtomicExpression__Group_1_3_1__1 : rule__AtomicExpression__Group_1_3_1__1__Impl ;
     public final void rule__AtomicExpression__Group_1_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9354:1: ( rule__AtomicExpression__Group_1_3_1__1__Impl )
-            // InternalHenshin_text.g:9355:2: rule__AtomicExpression__Group_1_3_1__1__Impl
+            // InternalHenshin_text.g:9430:1: ( rule__AtomicExpression__Group_1_3_1__1__Impl )
+            // InternalHenshin_text.g:9431:2: rule__AtomicExpression__Group_1_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__Group_1_3_1__1__Impl();
@@ -29069,21 +29355,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_1_3_1__1__Impl"
-    // InternalHenshin_text.g:9361:1: rule__AtomicExpression__Group_1_3_1__1__Impl : ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 ) ) ;
+    // InternalHenshin_text.g:9437:1: rule__AtomicExpression__Group_1_3_1__1__Impl : ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 ) ) ;
     public final void rule__AtomicExpression__Group_1_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9365:1: ( ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 ) ) )
-            // InternalHenshin_text.g:9366:1: ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 ) )
+            // InternalHenshin_text.g:9441:1: ( ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 ) ) )
+            // InternalHenshin_text.g:9442:1: ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 ) )
             {
-            // InternalHenshin_text.g:9366:1: ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 ) )
-            // InternalHenshin_text.g:9367:2: ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 )
+            // InternalHenshin_text.g:9442:1: ( ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 ) )
+            // InternalHenshin_text.g:9443:2: ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 )
             {
              before(grammarAccess.getAtomicExpressionAccess().getJavaParameterAssignment_1_3_1_1()); 
-            // InternalHenshin_text.g:9368:2: ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 )
-            // InternalHenshin_text.g:9368:3: rule__AtomicExpression__JavaParameterAssignment_1_3_1_1
+            // InternalHenshin_text.g:9444:2: ( rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 )
+            // InternalHenshin_text.g:9444:3: rule__AtomicExpression__JavaParameterAssignment_1_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__JavaParameterAssignment_1_3_1_1();
@@ -29116,14 +29402,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_2__0"
-    // InternalHenshin_text.g:9377:1: rule__AtomicExpression__Group_2__0 : rule__AtomicExpression__Group_2__0__Impl rule__AtomicExpression__Group_2__1 ;
+    // InternalHenshin_text.g:9453:1: rule__AtomicExpression__Group_2__0 : rule__AtomicExpression__Group_2__0__Impl rule__AtomicExpression__Group_2__1 ;
     public final void rule__AtomicExpression__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9381:1: ( rule__AtomicExpression__Group_2__0__Impl rule__AtomicExpression__Group_2__1 )
-            // InternalHenshin_text.g:9382:2: rule__AtomicExpression__Group_2__0__Impl rule__AtomicExpression__Group_2__1
+            // InternalHenshin_text.g:9457:1: ( rule__AtomicExpression__Group_2__0__Impl rule__AtomicExpression__Group_2__1 )
+            // InternalHenshin_text.g:9458:2: rule__AtomicExpression__Group_2__0__Impl rule__AtomicExpression__Group_2__1
             {
             pushFollow(FOLLOW_7);
             rule__AtomicExpression__Group_2__0__Impl();
@@ -29154,21 +29440,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_2__0__Impl"
-    // InternalHenshin_text.g:9389:1: rule__AtomicExpression__Group_2__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:9465:1: rule__AtomicExpression__Group_2__0__Impl : ( () ) ;
     public final void rule__AtomicExpression__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9393:1: ( ( () ) )
-            // InternalHenshin_text.g:9394:1: ( () )
+            // InternalHenshin_text.g:9469:1: ( ( () ) )
+            // InternalHenshin_text.g:9470:1: ( () )
             {
-            // InternalHenshin_text.g:9394:1: ( () )
-            // InternalHenshin_text.g:9395:2: ()
+            // InternalHenshin_text.g:9470:1: ( () )
+            // InternalHenshin_text.g:9471:2: ()
             {
              before(grammarAccess.getAtomicExpressionAccess().getJavaAttributeValueAction_2_0()); 
-            // InternalHenshin_text.g:9396:2: ()
-            // InternalHenshin_text.g:9396:3: 
+            // InternalHenshin_text.g:9472:2: ()
+            // InternalHenshin_text.g:9472:3: 
             {
             }
 
@@ -29191,14 +29477,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_2__1"
-    // InternalHenshin_text.g:9404:1: rule__AtomicExpression__Group_2__1 : rule__AtomicExpression__Group_2__1__Impl ;
+    // InternalHenshin_text.g:9480:1: rule__AtomicExpression__Group_2__1 : rule__AtomicExpression__Group_2__1__Impl ;
     public final void rule__AtomicExpression__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9408:1: ( rule__AtomicExpression__Group_2__1__Impl )
-            // InternalHenshin_text.g:9409:2: rule__AtomicExpression__Group_2__1__Impl
+            // InternalHenshin_text.g:9484:1: ( rule__AtomicExpression__Group_2__1__Impl )
+            // InternalHenshin_text.g:9485:2: rule__AtomicExpression__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__Group_2__1__Impl();
@@ -29224,21 +29510,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_2__1__Impl"
-    // InternalHenshin_text.g:9415:1: rule__AtomicExpression__Group_2__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_2_1 ) ) ;
+    // InternalHenshin_text.g:9491:1: rule__AtomicExpression__Group_2__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_2_1 ) ) ;
     public final void rule__AtomicExpression__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9419:1: ( ( ( rule__AtomicExpression__ValueAssignment_2_1 ) ) )
-            // InternalHenshin_text.g:9420:1: ( ( rule__AtomicExpression__ValueAssignment_2_1 ) )
+            // InternalHenshin_text.g:9495:1: ( ( ( rule__AtomicExpression__ValueAssignment_2_1 ) ) )
+            // InternalHenshin_text.g:9496:1: ( ( rule__AtomicExpression__ValueAssignment_2_1 ) )
             {
-            // InternalHenshin_text.g:9420:1: ( ( rule__AtomicExpression__ValueAssignment_2_1 ) )
-            // InternalHenshin_text.g:9421:2: ( rule__AtomicExpression__ValueAssignment_2_1 )
+            // InternalHenshin_text.g:9496:1: ( ( rule__AtomicExpression__ValueAssignment_2_1 ) )
+            // InternalHenshin_text.g:9497:2: ( rule__AtomicExpression__ValueAssignment_2_1 )
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueAssignment_2_1()); 
-            // InternalHenshin_text.g:9422:2: ( rule__AtomicExpression__ValueAssignment_2_1 )
-            // InternalHenshin_text.g:9422:3: rule__AtomicExpression__ValueAssignment_2_1
+            // InternalHenshin_text.g:9498:2: ( rule__AtomicExpression__ValueAssignment_2_1 )
+            // InternalHenshin_text.g:9498:3: rule__AtomicExpression__ValueAssignment_2_1
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__ValueAssignment_2_1();
@@ -29271,16 +29557,16 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_3__0"
-    // InternalHenshin_text.g:9431:1: rule__AtomicExpression__Group_3__0 : rule__AtomicExpression__Group_3__0__Impl rule__AtomicExpression__Group_3__1 ;
+    // InternalHenshin_text.g:9507:1: rule__AtomicExpression__Group_3__0 : rule__AtomicExpression__Group_3__0__Impl rule__AtomicExpression__Group_3__1 ;
     public final void rule__AtomicExpression__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9435:1: ( rule__AtomicExpression__Group_3__0__Impl rule__AtomicExpression__Group_3__1 )
-            // InternalHenshin_text.g:9436:2: rule__AtomicExpression__Group_3__0__Impl rule__AtomicExpression__Group_3__1
+            // InternalHenshin_text.g:9511:1: ( rule__AtomicExpression__Group_3__0__Impl rule__AtomicExpression__Group_3__1 )
+            // InternalHenshin_text.g:9512:2: rule__AtomicExpression__Group_3__0__Impl rule__AtomicExpression__Group_3__1
             {
-            pushFollow(FOLLOW_62);
+            pushFollow(FOLLOW_64);
             rule__AtomicExpression__Group_3__0__Impl();
 
             state._fsp--;
@@ -29309,21 +29595,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_3__0__Impl"
-    // InternalHenshin_text.g:9443:1: rule__AtomicExpression__Group_3__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:9519:1: rule__AtomicExpression__Group_3__0__Impl : ( () ) ;
     public final void rule__AtomicExpression__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9447:1: ( ( () ) )
-            // InternalHenshin_text.g:9448:1: ( () )
+            // InternalHenshin_text.g:9523:1: ( ( () ) )
+            // InternalHenshin_text.g:9524:1: ( () )
             {
-            // InternalHenshin_text.g:9448:1: ( () )
-            // InternalHenshin_text.g:9449:2: ()
+            // InternalHenshin_text.g:9524:1: ( () )
+            // InternalHenshin_text.g:9525:2: ()
             {
              before(grammarAccess.getAtomicExpressionAccess().getStringValueAction_3_0()); 
-            // InternalHenshin_text.g:9450:2: ()
-            // InternalHenshin_text.g:9450:3: 
+            // InternalHenshin_text.g:9526:2: ()
+            // InternalHenshin_text.g:9526:3: 
             {
             }
 
@@ -29346,14 +29632,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_3__1"
-    // InternalHenshin_text.g:9458:1: rule__AtomicExpression__Group_3__1 : rule__AtomicExpression__Group_3__1__Impl ;
+    // InternalHenshin_text.g:9534:1: rule__AtomicExpression__Group_3__1 : rule__AtomicExpression__Group_3__1__Impl ;
     public final void rule__AtomicExpression__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9462:1: ( rule__AtomicExpression__Group_3__1__Impl )
-            // InternalHenshin_text.g:9463:2: rule__AtomicExpression__Group_3__1__Impl
+            // InternalHenshin_text.g:9538:1: ( rule__AtomicExpression__Group_3__1__Impl )
+            // InternalHenshin_text.g:9539:2: rule__AtomicExpression__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__Group_3__1__Impl();
@@ -29379,21 +29665,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_3__1__Impl"
-    // InternalHenshin_text.g:9469:1: rule__AtomicExpression__Group_3__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_3_1 ) ) ;
+    // InternalHenshin_text.g:9545:1: rule__AtomicExpression__Group_3__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_3_1 ) ) ;
     public final void rule__AtomicExpression__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9473:1: ( ( ( rule__AtomicExpression__ValueAssignment_3_1 ) ) )
-            // InternalHenshin_text.g:9474:1: ( ( rule__AtomicExpression__ValueAssignment_3_1 ) )
+            // InternalHenshin_text.g:9549:1: ( ( ( rule__AtomicExpression__ValueAssignment_3_1 ) ) )
+            // InternalHenshin_text.g:9550:1: ( ( rule__AtomicExpression__ValueAssignment_3_1 ) )
             {
-            // InternalHenshin_text.g:9474:1: ( ( rule__AtomicExpression__ValueAssignment_3_1 ) )
-            // InternalHenshin_text.g:9475:2: ( rule__AtomicExpression__ValueAssignment_3_1 )
+            // InternalHenshin_text.g:9550:1: ( ( rule__AtomicExpression__ValueAssignment_3_1 ) )
+            // InternalHenshin_text.g:9551:2: ( rule__AtomicExpression__ValueAssignment_3_1 )
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueAssignment_3_1()); 
-            // InternalHenshin_text.g:9476:2: ( rule__AtomicExpression__ValueAssignment_3_1 )
-            // InternalHenshin_text.g:9476:3: rule__AtomicExpression__ValueAssignment_3_1
+            // InternalHenshin_text.g:9552:2: ( rule__AtomicExpression__ValueAssignment_3_1 )
+            // InternalHenshin_text.g:9552:3: rule__AtomicExpression__ValueAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__ValueAssignment_3_1();
@@ -29426,16 +29712,16 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_4__0"
-    // InternalHenshin_text.g:9485:1: rule__AtomicExpression__Group_4__0 : rule__AtomicExpression__Group_4__0__Impl rule__AtomicExpression__Group_4__1 ;
+    // InternalHenshin_text.g:9561:1: rule__AtomicExpression__Group_4__0 : rule__AtomicExpression__Group_4__0__Impl rule__AtomicExpression__Group_4__1 ;
     public final void rule__AtomicExpression__Group_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9489:1: ( rule__AtomicExpression__Group_4__0__Impl rule__AtomicExpression__Group_4__1 )
-            // InternalHenshin_text.g:9490:2: rule__AtomicExpression__Group_4__0__Impl rule__AtomicExpression__Group_4__1
+            // InternalHenshin_text.g:9565:1: ( rule__AtomicExpression__Group_4__0__Impl rule__AtomicExpression__Group_4__1 )
+            // InternalHenshin_text.g:9566:2: rule__AtomicExpression__Group_4__0__Impl rule__AtomicExpression__Group_4__1
             {
-            pushFollow(FOLLOW_63);
+            pushFollow(FOLLOW_65);
             rule__AtomicExpression__Group_4__0__Impl();
 
             state._fsp--;
@@ -29464,21 +29750,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_4__0__Impl"
-    // InternalHenshin_text.g:9497:1: rule__AtomicExpression__Group_4__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:9573:1: rule__AtomicExpression__Group_4__0__Impl : ( () ) ;
     public final void rule__AtomicExpression__Group_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9501:1: ( ( () ) )
-            // InternalHenshin_text.g:9502:1: ( () )
+            // InternalHenshin_text.g:9577:1: ( ( () ) )
+            // InternalHenshin_text.g:9578:1: ( () )
             {
-            // InternalHenshin_text.g:9502:1: ( () )
-            // InternalHenshin_text.g:9503:2: ()
+            // InternalHenshin_text.g:9578:1: ( () )
+            // InternalHenshin_text.g:9579:2: ()
             {
              before(grammarAccess.getAtomicExpressionAccess().getNumberValueAction_4_0()); 
-            // InternalHenshin_text.g:9504:2: ()
-            // InternalHenshin_text.g:9504:3: 
+            // InternalHenshin_text.g:9580:2: ()
+            // InternalHenshin_text.g:9580:3: 
             {
             }
 
@@ -29501,14 +29787,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_4__1"
-    // InternalHenshin_text.g:9512:1: rule__AtomicExpression__Group_4__1 : rule__AtomicExpression__Group_4__1__Impl ;
+    // InternalHenshin_text.g:9588:1: rule__AtomicExpression__Group_4__1 : rule__AtomicExpression__Group_4__1__Impl ;
     public final void rule__AtomicExpression__Group_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9516:1: ( rule__AtomicExpression__Group_4__1__Impl )
-            // InternalHenshin_text.g:9517:2: rule__AtomicExpression__Group_4__1__Impl
+            // InternalHenshin_text.g:9592:1: ( rule__AtomicExpression__Group_4__1__Impl )
+            // InternalHenshin_text.g:9593:2: rule__AtomicExpression__Group_4__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__Group_4__1__Impl();
@@ -29534,21 +29820,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_4__1__Impl"
-    // InternalHenshin_text.g:9523:1: rule__AtomicExpression__Group_4__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_4_1 ) ) ;
+    // InternalHenshin_text.g:9599:1: rule__AtomicExpression__Group_4__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_4_1 ) ) ;
     public final void rule__AtomicExpression__Group_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9527:1: ( ( ( rule__AtomicExpression__ValueAssignment_4_1 ) ) )
-            // InternalHenshin_text.g:9528:1: ( ( rule__AtomicExpression__ValueAssignment_4_1 ) )
+            // InternalHenshin_text.g:9603:1: ( ( ( rule__AtomicExpression__ValueAssignment_4_1 ) ) )
+            // InternalHenshin_text.g:9604:1: ( ( rule__AtomicExpression__ValueAssignment_4_1 ) )
             {
-            // InternalHenshin_text.g:9528:1: ( ( rule__AtomicExpression__ValueAssignment_4_1 ) )
-            // InternalHenshin_text.g:9529:2: ( rule__AtomicExpression__ValueAssignment_4_1 )
+            // InternalHenshin_text.g:9604:1: ( ( rule__AtomicExpression__ValueAssignment_4_1 ) )
+            // InternalHenshin_text.g:9605:2: ( rule__AtomicExpression__ValueAssignment_4_1 )
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueAssignment_4_1()); 
-            // InternalHenshin_text.g:9530:2: ( rule__AtomicExpression__ValueAssignment_4_1 )
-            // InternalHenshin_text.g:9530:3: rule__AtomicExpression__ValueAssignment_4_1
+            // InternalHenshin_text.g:9606:2: ( rule__AtomicExpression__ValueAssignment_4_1 )
+            // InternalHenshin_text.g:9606:3: rule__AtomicExpression__ValueAssignment_4_1
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__ValueAssignment_4_1();
@@ -29581,16 +29867,16 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_5__0"
-    // InternalHenshin_text.g:9539:1: rule__AtomicExpression__Group_5__0 : rule__AtomicExpression__Group_5__0__Impl rule__AtomicExpression__Group_5__1 ;
+    // InternalHenshin_text.g:9615:1: rule__AtomicExpression__Group_5__0 : rule__AtomicExpression__Group_5__0__Impl rule__AtomicExpression__Group_5__1 ;
     public final void rule__AtomicExpression__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9543:1: ( rule__AtomicExpression__Group_5__0__Impl rule__AtomicExpression__Group_5__1 )
-            // InternalHenshin_text.g:9544:2: rule__AtomicExpression__Group_5__0__Impl rule__AtomicExpression__Group_5__1
+            // InternalHenshin_text.g:9619:1: ( rule__AtomicExpression__Group_5__0__Impl rule__AtomicExpression__Group_5__1 )
+            // InternalHenshin_text.g:9620:2: rule__AtomicExpression__Group_5__0__Impl rule__AtomicExpression__Group_5__1
             {
-            pushFollow(FOLLOW_64);
+            pushFollow(FOLLOW_66);
             rule__AtomicExpression__Group_5__0__Impl();
 
             state._fsp--;
@@ -29619,21 +29905,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_5__0__Impl"
-    // InternalHenshin_text.g:9551:1: rule__AtomicExpression__Group_5__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:9627:1: rule__AtomicExpression__Group_5__0__Impl : ( () ) ;
     public final void rule__AtomicExpression__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9555:1: ( ( () ) )
-            // InternalHenshin_text.g:9556:1: ( () )
+            // InternalHenshin_text.g:9631:1: ( ( () ) )
+            // InternalHenshin_text.g:9632:1: ( () )
             {
-            // InternalHenshin_text.g:9556:1: ( () )
-            // InternalHenshin_text.g:9557:2: ()
+            // InternalHenshin_text.g:9632:1: ( () )
+            // InternalHenshin_text.g:9633:2: ()
             {
              before(grammarAccess.getAtomicExpressionAccess().getIntegerValueAction_5_0()); 
-            // InternalHenshin_text.g:9558:2: ()
-            // InternalHenshin_text.g:9558:3: 
+            // InternalHenshin_text.g:9634:2: ()
+            // InternalHenshin_text.g:9634:3: 
             {
             }
 
@@ -29656,14 +29942,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_5__1"
-    // InternalHenshin_text.g:9566:1: rule__AtomicExpression__Group_5__1 : rule__AtomicExpression__Group_5__1__Impl ;
+    // InternalHenshin_text.g:9642:1: rule__AtomicExpression__Group_5__1 : rule__AtomicExpression__Group_5__1__Impl ;
     public final void rule__AtomicExpression__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9570:1: ( rule__AtomicExpression__Group_5__1__Impl )
-            // InternalHenshin_text.g:9571:2: rule__AtomicExpression__Group_5__1__Impl
+            // InternalHenshin_text.g:9646:1: ( rule__AtomicExpression__Group_5__1__Impl )
+            // InternalHenshin_text.g:9647:2: rule__AtomicExpression__Group_5__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__Group_5__1__Impl();
@@ -29689,21 +29975,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_5__1__Impl"
-    // InternalHenshin_text.g:9577:1: rule__AtomicExpression__Group_5__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_5_1 ) ) ;
+    // InternalHenshin_text.g:9653:1: rule__AtomicExpression__Group_5__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_5_1 ) ) ;
     public final void rule__AtomicExpression__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9581:1: ( ( ( rule__AtomicExpression__ValueAssignment_5_1 ) ) )
-            // InternalHenshin_text.g:9582:1: ( ( rule__AtomicExpression__ValueAssignment_5_1 ) )
+            // InternalHenshin_text.g:9657:1: ( ( ( rule__AtomicExpression__ValueAssignment_5_1 ) ) )
+            // InternalHenshin_text.g:9658:1: ( ( rule__AtomicExpression__ValueAssignment_5_1 ) )
             {
-            // InternalHenshin_text.g:9582:1: ( ( rule__AtomicExpression__ValueAssignment_5_1 ) )
-            // InternalHenshin_text.g:9583:2: ( rule__AtomicExpression__ValueAssignment_5_1 )
+            // InternalHenshin_text.g:9658:1: ( ( rule__AtomicExpression__ValueAssignment_5_1 ) )
+            // InternalHenshin_text.g:9659:2: ( rule__AtomicExpression__ValueAssignment_5_1 )
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueAssignment_5_1()); 
-            // InternalHenshin_text.g:9584:2: ( rule__AtomicExpression__ValueAssignment_5_1 )
-            // InternalHenshin_text.g:9584:3: rule__AtomicExpression__ValueAssignment_5_1
+            // InternalHenshin_text.g:9660:2: ( rule__AtomicExpression__ValueAssignment_5_1 )
+            // InternalHenshin_text.g:9660:3: rule__AtomicExpression__ValueAssignment_5_1
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__ValueAssignment_5_1();
@@ -29736,16 +30022,16 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_6__0"
-    // InternalHenshin_text.g:9593:1: rule__AtomicExpression__Group_6__0 : rule__AtomicExpression__Group_6__0__Impl rule__AtomicExpression__Group_6__1 ;
+    // InternalHenshin_text.g:9669:1: rule__AtomicExpression__Group_6__0 : rule__AtomicExpression__Group_6__0__Impl rule__AtomicExpression__Group_6__1 ;
     public final void rule__AtomicExpression__Group_6__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9597:1: ( rule__AtomicExpression__Group_6__0__Impl rule__AtomicExpression__Group_6__1 )
-            // InternalHenshin_text.g:9598:2: rule__AtomicExpression__Group_6__0__Impl rule__AtomicExpression__Group_6__1
+            // InternalHenshin_text.g:9673:1: ( rule__AtomicExpression__Group_6__0__Impl rule__AtomicExpression__Group_6__1 )
+            // InternalHenshin_text.g:9674:2: rule__AtomicExpression__Group_6__0__Impl rule__AtomicExpression__Group_6__1
             {
-            pushFollow(FOLLOW_65);
+            pushFollow(FOLLOW_67);
             rule__AtomicExpression__Group_6__0__Impl();
 
             state._fsp--;
@@ -29774,21 +30060,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_6__0__Impl"
-    // InternalHenshin_text.g:9605:1: rule__AtomicExpression__Group_6__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:9681:1: rule__AtomicExpression__Group_6__0__Impl : ( () ) ;
     public final void rule__AtomicExpression__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9609:1: ( ( () ) )
-            // InternalHenshin_text.g:9610:1: ( () )
+            // InternalHenshin_text.g:9685:1: ( ( () ) )
+            // InternalHenshin_text.g:9686:1: ( () )
             {
-            // InternalHenshin_text.g:9610:1: ( () )
-            // InternalHenshin_text.g:9611:2: ()
+            // InternalHenshin_text.g:9686:1: ( () )
+            // InternalHenshin_text.g:9687:2: ()
             {
              before(grammarAccess.getAtomicExpressionAccess().getNaturalValueAction_6_0()); 
-            // InternalHenshin_text.g:9612:2: ()
-            // InternalHenshin_text.g:9612:3: 
+            // InternalHenshin_text.g:9688:2: ()
+            // InternalHenshin_text.g:9688:3: 
             {
             }
 
@@ -29811,14 +30097,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_6__1"
-    // InternalHenshin_text.g:9620:1: rule__AtomicExpression__Group_6__1 : rule__AtomicExpression__Group_6__1__Impl ;
+    // InternalHenshin_text.g:9696:1: rule__AtomicExpression__Group_6__1 : rule__AtomicExpression__Group_6__1__Impl ;
     public final void rule__AtomicExpression__Group_6__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9624:1: ( rule__AtomicExpression__Group_6__1__Impl )
-            // InternalHenshin_text.g:9625:2: rule__AtomicExpression__Group_6__1__Impl
+            // InternalHenshin_text.g:9700:1: ( rule__AtomicExpression__Group_6__1__Impl )
+            // InternalHenshin_text.g:9701:2: rule__AtomicExpression__Group_6__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__Group_6__1__Impl();
@@ -29844,21 +30130,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_6__1__Impl"
-    // InternalHenshin_text.g:9631:1: rule__AtomicExpression__Group_6__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_6_1 ) ) ;
+    // InternalHenshin_text.g:9707:1: rule__AtomicExpression__Group_6__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_6_1 ) ) ;
     public final void rule__AtomicExpression__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9635:1: ( ( ( rule__AtomicExpression__ValueAssignment_6_1 ) ) )
-            // InternalHenshin_text.g:9636:1: ( ( rule__AtomicExpression__ValueAssignment_6_1 ) )
+            // InternalHenshin_text.g:9711:1: ( ( ( rule__AtomicExpression__ValueAssignment_6_1 ) ) )
+            // InternalHenshin_text.g:9712:1: ( ( rule__AtomicExpression__ValueAssignment_6_1 ) )
             {
-            // InternalHenshin_text.g:9636:1: ( ( rule__AtomicExpression__ValueAssignment_6_1 ) )
-            // InternalHenshin_text.g:9637:2: ( rule__AtomicExpression__ValueAssignment_6_1 )
+            // InternalHenshin_text.g:9712:1: ( ( rule__AtomicExpression__ValueAssignment_6_1 ) )
+            // InternalHenshin_text.g:9713:2: ( rule__AtomicExpression__ValueAssignment_6_1 )
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueAssignment_6_1()); 
-            // InternalHenshin_text.g:9638:2: ( rule__AtomicExpression__ValueAssignment_6_1 )
-            // InternalHenshin_text.g:9638:3: rule__AtomicExpression__ValueAssignment_6_1
+            // InternalHenshin_text.g:9714:2: ( rule__AtomicExpression__ValueAssignment_6_1 )
+            // InternalHenshin_text.g:9714:3: rule__AtomicExpression__ValueAssignment_6_1
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__ValueAssignment_6_1();
@@ -29891,16 +30177,16 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_7__0"
-    // InternalHenshin_text.g:9647:1: rule__AtomicExpression__Group_7__0 : rule__AtomicExpression__Group_7__0__Impl rule__AtomicExpression__Group_7__1 ;
+    // InternalHenshin_text.g:9723:1: rule__AtomicExpression__Group_7__0 : rule__AtomicExpression__Group_7__0__Impl rule__AtomicExpression__Group_7__1 ;
     public final void rule__AtomicExpression__Group_7__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9651:1: ( rule__AtomicExpression__Group_7__0__Impl rule__AtomicExpression__Group_7__1 )
-            // InternalHenshin_text.g:9652:2: rule__AtomicExpression__Group_7__0__Impl rule__AtomicExpression__Group_7__1
+            // InternalHenshin_text.g:9727:1: ( rule__AtomicExpression__Group_7__0__Impl rule__AtomicExpression__Group_7__1 )
+            // InternalHenshin_text.g:9728:2: rule__AtomicExpression__Group_7__0__Impl rule__AtomicExpression__Group_7__1
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_22);
             rule__AtomicExpression__Group_7__0__Impl();
 
             state._fsp--;
@@ -29929,21 +30215,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_7__0__Impl"
-    // InternalHenshin_text.g:9659:1: rule__AtomicExpression__Group_7__0__Impl : ( () ) ;
+    // InternalHenshin_text.g:9735:1: rule__AtomicExpression__Group_7__0__Impl : ( () ) ;
     public final void rule__AtomicExpression__Group_7__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9663:1: ( ( () ) )
-            // InternalHenshin_text.g:9664:1: ( () )
+            // InternalHenshin_text.g:9739:1: ( ( () ) )
+            // InternalHenshin_text.g:9740:1: ( () )
             {
-            // InternalHenshin_text.g:9664:1: ( () )
-            // InternalHenshin_text.g:9665:2: ()
+            // InternalHenshin_text.g:9740:1: ( () )
+            // InternalHenshin_text.g:9741:2: ()
             {
              before(grammarAccess.getAtomicExpressionAccess().getBoolValueAction_7_0()); 
-            // InternalHenshin_text.g:9666:2: ()
-            // InternalHenshin_text.g:9666:3: 
+            // InternalHenshin_text.g:9742:2: ()
+            // InternalHenshin_text.g:9742:3: 
             {
             }
 
@@ -29966,14 +30252,14 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_7__1"
-    // InternalHenshin_text.g:9674:1: rule__AtomicExpression__Group_7__1 : rule__AtomicExpression__Group_7__1__Impl ;
+    // InternalHenshin_text.g:9750:1: rule__AtomicExpression__Group_7__1 : rule__AtomicExpression__Group_7__1__Impl ;
     public final void rule__AtomicExpression__Group_7__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9678:1: ( rule__AtomicExpression__Group_7__1__Impl )
-            // InternalHenshin_text.g:9679:2: rule__AtomicExpression__Group_7__1__Impl
+            // InternalHenshin_text.g:9754:1: ( rule__AtomicExpression__Group_7__1__Impl )
+            // InternalHenshin_text.g:9755:2: rule__AtomicExpression__Group_7__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__Group_7__1__Impl();
@@ -29999,21 +30285,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__Group_7__1__Impl"
-    // InternalHenshin_text.g:9685:1: rule__AtomicExpression__Group_7__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_7_1 ) ) ;
+    // InternalHenshin_text.g:9761:1: rule__AtomicExpression__Group_7__1__Impl : ( ( rule__AtomicExpression__ValueAssignment_7_1 ) ) ;
     public final void rule__AtomicExpression__Group_7__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9689:1: ( ( ( rule__AtomicExpression__ValueAssignment_7_1 ) ) )
-            // InternalHenshin_text.g:9690:1: ( ( rule__AtomicExpression__ValueAssignment_7_1 ) )
+            // InternalHenshin_text.g:9765:1: ( ( ( rule__AtomicExpression__ValueAssignment_7_1 ) ) )
+            // InternalHenshin_text.g:9766:1: ( ( rule__AtomicExpression__ValueAssignment_7_1 ) )
             {
-            // InternalHenshin_text.g:9690:1: ( ( rule__AtomicExpression__ValueAssignment_7_1 ) )
-            // InternalHenshin_text.g:9691:2: ( rule__AtomicExpression__ValueAssignment_7_1 )
+            // InternalHenshin_text.g:9766:1: ( ( rule__AtomicExpression__ValueAssignment_7_1 ) )
+            // InternalHenshin_text.g:9767:2: ( rule__AtomicExpression__ValueAssignment_7_1 )
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueAssignment_7_1()); 
-            // InternalHenshin_text.g:9692:2: ( rule__AtomicExpression__ValueAssignment_7_1 )
-            // InternalHenshin_text.g:9692:3: rule__AtomicExpression__ValueAssignment_7_1
+            // InternalHenshin_text.g:9768:2: ( rule__AtomicExpression__ValueAssignment_7_1 )
+            // InternalHenshin_text.g:9768:3: rule__AtomicExpression__ValueAssignment_7_1
             {
             pushFollow(FOLLOW_2);
             rule__AtomicExpression__ValueAssignment_7_1();
@@ -30046,14 +30332,14 @@
 
 
     // $ANTLR start "rule__JavaAttribute__Group__0"
-    // InternalHenshin_text.g:9701:1: rule__JavaAttribute__Group__0 : rule__JavaAttribute__Group__0__Impl rule__JavaAttribute__Group__1 ;
+    // InternalHenshin_text.g:9777:1: rule__JavaAttribute__Group__0 : rule__JavaAttribute__Group__0__Impl rule__JavaAttribute__Group__1 ;
     public final void rule__JavaAttribute__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9705:1: ( rule__JavaAttribute__Group__0__Impl rule__JavaAttribute__Group__1 )
-            // InternalHenshin_text.g:9706:2: rule__JavaAttribute__Group__0__Impl rule__JavaAttribute__Group__1
+            // InternalHenshin_text.g:9781:1: ( rule__JavaAttribute__Group__0__Impl rule__JavaAttribute__Group__1 )
+            // InternalHenshin_text.g:9782:2: rule__JavaAttribute__Group__0__Impl rule__JavaAttribute__Group__1
             {
             pushFollow(FOLLOW_8);
             rule__JavaAttribute__Group__0__Impl();
@@ -30084,17 +30370,17 @@
 
 
     // $ANTLR start "rule__JavaAttribute__Group__0__Impl"
-    // InternalHenshin_text.g:9713:1: rule__JavaAttribute__Group__0__Impl : ( RULE_ID ) ;
+    // InternalHenshin_text.g:9789:1: rule__JavaAttribute__Group__0__Impl : ( RULE_ID ) ;
     public final void rule__JavaAttribute__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9717:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:9718:1: ( RULE_ID )
+            // InternalHenshin_text.g:9793:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:9794:1: ( RULE_ID )
             {
-            // InternalHenshin_text.g:9718:1: ( RULE_ID )
-            // InternalHenshin_text.g:9719:2: RULE_ID
+            // InternalHenshin_text.g:9794:1: ( RULE_ID )
+            // InternalHenshin_text.g:9795:2: RULE_ID
             {
              before(grammarAccess.getJavaAttributeAccess().getIDTerminalRuleCall_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -30121,14 +30407,14 @@
 
 
     // $ANTLR start "rule__JavaAttribute__Group__1"
-    // InternalHenshin_text.g:9728:1: rule__JavaAttribute__Group__1 : rule__JavaAttribute__Group__1__Impl rule__JavaAttribute__Group__2 ;
+    // InternalHenshin_text.g:9804:1: rule__JavaAttribute__Group__1 : rule__JavaAttribute__Group__1__Impl rule__JavaAttribute__Group__2 ;
     public final void rule__JavaAttribute__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9732:1: ( rule__JavaAttribute__Group__1__Impl rule__JavaAttribute__Group__2 )
-            // InternalHenshin_text.g:9733:2: rule__JavaAttribute__Group__1__Impl rule__JavaAttribute__Group__2
+            // InternalHenshin_text.g:9808:1: ( rule__JavaAttribute__Group__1__Impl rule__JavaAttribute__Group__2 )
+            // InternalHenshin_text.g:9809:2: rule__JavaAttribute__Group__1__Impl rule__JavaAttribute__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__JavaAttribute__Group__1__Impl();
@@ -30159,20 +30445,20 @@
 
 
     // $ANTLR start "rule__JavaAttribute__Group__1__Impl"
-    // InternalHenshin_text.g:9740:1: rule__JavaAttribute__Group__1__Impl : ( '.' ) ;
+    // InternalHenshin_text.g:9816:1: rule__JavaAttribute__Group__1__Impl : ( '.' ) ;
     public final void rule__JavaAttribute__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9744:1: ( ( '.' ) )
-            // InternalHenshin_text.g:9745:1: ( '.' )
+            // InternalHenshin_text.g:9820:1: ( ( '.' ) )
+            // InternalHenshin_text.g:9821:1: ( '.' )
             {
-            // InternalHenshin_text.g:9745:1: ( '.' )
-            // InternalHenshin_text.g:9746:2: '.'
+            // InternalHenshin_text.g:9821:1: ( '.' )
+            // InternalHenshin_text.g:9822:2: '.'
             {
              before(grammarAccess.getJavaAttributeAccess().getFullStopKeyword_1()); 
-            match(input,64,FOLLOW_2); 
+            match(input,68,FOLLOW_2); 
              after(grammarAccess.getJavaAttributeAccess().getFullStopKeyword_1()); 
 
             }
@@ -30196,14 +30482,14 @@
 
 
     // $ANTLR start "rule__JavaAttribute__Group__2"
-    // InternalHenshin_text.g:9755:1: rule__JavaAttribute__Group__2 : rule__JavaAttribute__Group__2__Impl ;
+    // InternalHenshin_text.g:9831:1: rule__JavaAttribute__Group__2 : rule__JavaAttribute__Group__2__Impl ;
     public final void rule__JavaAttribute__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9759:1: ( rule__JavaAttribute__Group__2__Impl )
-            // InternalHenshin_text.g:9760:2: rule__JavaAttribute__Group__2__Impl
+            // InternalHenshin_text.g:9835:1: ( rule__JavaAttribute__Group__2__Impl )
+            // InternalHenshin_text.g:9836:2: rule__JavaAttribute__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JavaAttribute__Group__2__Impl();
@@ -30229,17 +30515,17 @@
 
 
     // $ANTLR start "rule__JavaAttribute__Group__2__Impl"
-    // InternalHenshin_text.g:9766:1: rule__JavaAttribute__Group__2__Impl : ( RULE_ID ) ;
+    // InternalHenshin_text.g:9842:1: rule__JavaAttribute__Group__2__Impl : ( RULE_ID ) ;
     public final void rule__JavaAttribute__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9770:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:9771:1: ( RULE_ID )
+            // InternalHenshin_text.g:9846:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:9847:1: ( RULE_ID )
             {
-            // InternalHenshin_text.g:9771:1: ( RULE_ID )
-            // InternalHenshin_text.g:9772:2: RULE_ID
+            // InternalHenshin_text.g:9847:1: ( RULE_ID )
+            // InternalHenshin_text.g:9848:2: RULE_ID
             {
              before(grammarAccess.getJavaAttributeAccess().getIDTerminalRuleCall_2()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -30266,17 +30552,17 @@
 
 
     // $ANTLR start "rule__Model__EPackageimportsAssignment_0"
-    // InternalHenshin_text.g:9782:1: rule__Model__EPackageimportsAssignment_0 : ( ruleEPackageImport ) ;
+    // InternalHenshin_text.g:9858:1: rule__Model__EPackageimportsAssignment_0 : ( ruleEPackageImport ) ;
     public final void rule__Model__EPackageimportsAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9786:1: ( ( ruleEPackageImport ) )
-            // InternalHenshin_text.g:9787:2: ( ruleEPackageImport )
+            // InternalHenshin_text.g:9862:1: ( ( ruleEPackageImport ) )
+            // InternalHenshin_text.g:9863:2: ( ruleEPackageImport )
             {
-            // InternalHenshin_text.g:9787:2: ( ruleEPackageImport )
-            // InternalHenshin_text.g:9788:3: ruleEPackageImport
+            // InternalHenshin_text.g:9863:2: ( ruleEPackageImport )
+            // InternalHenshin_text.g:9864:3: ruleEPackageImport
             {
              before(grammarAccess.getModelAccess().getEPackageimportsEPackageImportParserRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -30307,17 +30593,17 @@
 
 
     // $ANTLR start "rule__Model__TransformationsystemAssignment_1"
-    // InternalHenshin_text.g:9797:1: rule__Model__TransformationsystemAssignment_1 : ( ruleModelElement ) ;
+    // InternalHenshin_text.g:9873:1: rule__Model__TransformationsystemAssignment_1 : ( ruleModelElement ) ;
     public final void rule__Model__TransformationsystemAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9801:1: ( ( ruleModelElement ) )
-            // InternalHenshin_text.g:9802:2: ( ruleModelElement )
+            // InternalHenshin_text.g:9877:1: ( ( ruleModelElement ) )
+            // InternalHenshin_text.g:9878:2: ( ruleModelElement )
             {
-            // InternalHenshin_text.g:9802:2: ( ruleModelElement )
-            // InternalHenshin_text.g:9803:3: ruleModelElement
+            // InternalHenshin_text.g:9878:2: ( ruleModelElement )
+            // InternalHenshin_text.g:9879:3: ruleModelElement
             {
              before(grammarAccess.getModelAccess().getTransformationsystemModelElementParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -30348,21 +30634,21 @@
 
 
     // $ANTLR start "rule__EPackageImport__RefAssignment_1"
-    // InternalHenshin_text.g:9812:1: rule__EPackageImport__RefAssignment_1 : ( ( ruleEString ) ) ;
+    // InternalHenshin_text.g:9888:1: rule__EPackageImport__RefAssignment_1 : ( ( ruleEString ) ) ;
     public final void rule__EPackageImport__RefAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9816:1: ( ( ( ruleEString ) ) )
-            // InternalHenshin_text.g:9817:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:9892:1: ( ( ( ruleEString ) ) )
+            // InternalHenshin_text.g:9893:2: ( ( ruleEString ) )
             {
-            // InternalHenshin_text.g:9817:2: ( ( ruleEString ) )
-            // InternalHenshin_text.g:9818:3: ( ruleEString )
+            // InternalHenshin_text.g:9893:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:9894:3: ( ruleEString )
             {
              before(grammarAccess.getEPackageImportAccess().getRefEPackageCrossReference_1_0()); 
-            // InternalHenshin_text.g:9819:3: ( ruleEString )
-            // InternalHenshin_text.g:9820:4: ruleEString
+            // InternalHenshin_text.g:9895:3: ( ruleEString )
+            // InternalHenshin_text.g:9896:4: ruleEString
             {
              before(grammarAccess.getEPackageImportAccess().getRefEPackageEStringParserRuleCall_1_0_1()); 
             pushFollow(FOLLOW_2);
@@ -30397,17 +30683,17 @@
 
 
     // $ANTLR start "rule__ModelElement__NameAssignment_0_2"
-    // InternalHenshin_text.g:9831:1: rule__ModelElement__NameAssignment_0_2 : ( RULE_ID ) ;
+    // InternalHenshin_text.g:9907:1: rule__ModelElement__NameAssignment_0_2 : ( RULE_ID ) ;
     public final void rule__ModelElement__NameAssignment_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9835:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:9836:2: ( RULE_ID )
+            // InternalHenshin_text.g:9911:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:9912:2: ( RULE_ID )
             {
-            // InternalHenshin_text.g:9836:2: ( RULE_ID )
-            // InternalHenshin_text.g:9837:3: RULE_ID
+            // InternalHenshin_text.g:9912:2: ( RULE_ID )
+            // InternalHenshin_text.g:9913:3: RULE_ID
             {
              before(grammarAccess.getModelElementAccess().getNameIDTerminalRuleCall_0_2_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -30434,17 +30720,17 @@
 
 
     // $ANTLR start "rule__ModelElement__ParametersAssignment_0_4_0"
-    // InternalHenshin_text.g:9846:1: rule__ModelElement__ParametersAssignment_0_4_0 : ( ruleParameter ) ;
+    // InternalHenshin_text.g:9922:1: rule__ModelElement__ParametersAssignment_0_4_0 : ( ruleParameter ) ;
     public final void rule__ModelElement__ParametersAssignment_0_4_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9850:1: ( ( ruleParameter ) )
-            // InternalHenshin_text.g:9851:2: ( ruleParameter )
+            // InternalHenshin_text.g:9926:1: ( ( ruleParameter ) )
+            // InternalHenshin_text.g:9927:2: ( ruleParameter )
             {
-            // InternalHenshin_text.g:9851:2: ( ruleParameter )
-            // InternalHenshin_text.g:9852:3: ruleParameter
+            // InternalHenshin_text.g:9927:2: ( ruleParameter )
+            // InternalHenshin_text.g:9928:3: ruleParameter
             {
              before(grammarAccess.getModelElementAccess().getParametersParameterParserRuleCall_0_4_0_0()); 
             pushFollow(FOLLOW_2);
@@ -30475,17 +30761,17 @@
 
 
     // $ANTLR start "rule__ModelElement__ParametersAssignment_0_4_1_1"
-    // InternalHenshin_text.g:9861:1: rule__ModelElement__ParametersAssignment_0_4_1_1 : ( ruleParameter ) ;
+    // InternalHenshin_text.g:9937:1: rule__ModelElement__ParametersAssignment_0_4_1_1 : ( ruleParameter ) ;
     public final void rule__ModelElement__ParametersAssignment_0_4_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9865:1: ( ( ruleParameter ) )
-            // InternalHenshin_text.g:9866:2: ( ruleParameter )
+            // InternalHenshin_text.g:9941:1: ( ( ruleParameter ) )
+            // InternalHenshin_text.g:9942:2: ( ruleParameter )
             {
-            // InternalHenshin_text.g:9866:2: ( ruleParameter )
-            // InternalHenshin_text.g:9867:3: ruleParameter
+            // InternalHenshin_text.g:9942:2: ( ruleParameter )
+            // InternalHenshin_text.g:9943:3: ruleParameter
             {
              before(grammarAccess.getModelElementAccess().getParametersParameterParserRuleCall_0_4_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -30516,17 +30802,17 @@
 
 
     // $ANTLR start "rule__ModelElement__RuleElementsAssignment_0_7"
-    // InternalHenshin_text.g:9876:1: rule__ModelElement__RuleElementsAssignment_0_7 : ( ruleRuleElement ) ;
+    // InternalHenshin_text.g:9952:1: rule__ModelElement__RuleElementsAssignment_0_7 : ( ruleRuleElement ) ;
     public final void rule__ModelElement__RuleElementsAssignment_0_7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9880:1: ( ( ruleRuleElement ) )
-            // InternalHenshin_text.g:9881:2: ( ruleRuleElement )
+            // InternalHenshin_text.g:9956:1: ( ( ruleRuleElement ) )
+            // InternalHenshin_text.g:9957:2: ( ruleRuleElement )
             {
-            // InternalHenshin_text.g:9881:2: ( ruleRuleElement )
-            // InternalHenshin_text.g:9882:3: ruleRuleElement
+            // InternalHenshin_text.g:9957:2: ( ruleRuleElement )
+            // InternalHenshin_text.g:9958:3: ruleRuleElement
             {
              before(grammarAccess.getModelElementAccess().getRuleElementsRuleElementParserRuleCall_0_7_0()); 
             pushFollow(FOLLOW_2);
@@ -30557,17 +30843,17 @@
 
 
     // $ANTLR start "rule__ModelElement__NameAssignment_1_2"
-    // InternalHenshin_text.g:9891:1: rule__ModelElement__NameAssignment_1_2 : ( RULE_ID ) ;
+    // InternalHenshin_text.g:9967:1: rule__ModelElement__NameAssignment_1_2 : ( RULE_ID ) ;
     public final void rule__ModelElement__NameAssignment_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9895:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:9896:2: ( RULE_ID )
+            // InternalHenshin_text.g:9971:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:9972:2: ( RULE_ID )
             {
-            // InternalHenshin_text.g:9896:2: ( RULE_ID )
-            // InternalHenshin_text.g:9897:3: RULE_ID
+            // InternalHenshin_text.g:9972:2: ( RULE_ID )
+            // InternalHenshin_text.g:9973:3: RULE_ID
             {
              before(grammarAccess.getModelElementAccess().getNameIDTerminalRuleCall_1_2_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -30594,17 +30880,17 @@
 
 
     // $ANTLR start "rule__ModelElement__ParametersAssignment_1_4_0"
-    // InternalHenshin_text.g:9906:1: rule__ModelElement__ParametersAssignment_1_4_0 : ( ruleParameter ) ;
+    // InternalHenshin_text.g:9982:1: rule__ModelElement__ParametersAssignment_1_4_0 : ( ruleParameter ) ;
     public final void rule__ModelElement__ParametersAssignment_1_4_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9910:1: ( ( ruleParameter ) )
-            // InternalHenshin_text.g:9911:2: ( ruleParameter )
+            // InternalHenshin_text.g:9986:1: ( ( ruleParameter ) )
+            // InternalHenshin_text.g:9987:2: ( ruleParameter )
             {
-            // InternalHenshin_text.g:9911:2: ( ruleParameter )
-            // InternalHenshin_text.g:9912:3: ruleParameter
+            // InternalHenshin_text.g:9987:2: ( ruleParameter )
+            // InternalHenshin_text.g:9988:3: ruleParameter
             {
              before(grammarAccess.getModelElementAccess().getParametersParameterParserRuleCall_1_4_0_0()); 
             pushFollow(FOLLOW_2);
@@ -30635,17 +30921,17 @@
 
 
     // $ANTLR start "rule__ModelElement__ParametersAssignment_1_4_1_1"
-    // InternalHenshin_text.g:9921:1: rule__ModelElement__ParametersAssignment_1_4_1_1 : ( ruleParameter ) ;
+    // InternalHenshin_text.g:9997:1: rule__ModelElement__ParametersAssignment_1_4_1_1 : ( ruleParameter ) ;
     public final void rule__ModelElement__ParametersAssignment_1_4_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9925:1: ( ( ruleParameter ) )
-            // InternalHenshin_text.g:9926:2: ( ruleParameter )
+            // InternalHenshin_text.g:10001:1: ( ( ruleParameter ) )
+            // InternalHenshin_text.g:10002:2: ( ruleParameter )
             {
-            // InternalHenshin_text.g:9926:2: ( ruleParameter )
-            // InternalHenshin_text.g:9927:3: ruleParameter
+            // InternalHenshin_text.g:10002:2: ( ruleParameter )
+            // InternalHenshin_text.g:10003:3: ruleParameter
             {
              before(grammarAccess.getModelElementAccess().getParametersParameterParserRuleCall_1_4_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -30676,17 +30962,17 @@
 
 
     // $ANTLR start "rule__ModelElement__UnitElementsAssignment_1_7"
-    // InternalHenshin_text.g:9936:1: rule__ModelElement__UnitElementsAssignment_1_7 : ( ruleUnitElement ) ;
+    // InternalHenshin_text.g:10012:1: rule__ModelElement__UnitElementsAssignment_1_7 : ( ruleUnitElement ) ;
     public final void rule__ModelElement__UnitElementsAssignment_1_7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9940:1: ( ( ruleUnitElement ) )
-            // InternalHenshin_text.g:9941:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10016:1: ( ( ruleUnitElement ) )
+            // InternalHenshin_text.g:10017:2: ( ruleUnitElement )
             {
-            // InternalHenshin_text.g:9941:2: ( ruleUnitElement )
-            // InternalHenshin_text.g:9942:3: ruleUnitElement
+            // InternalHenshin_text.g:10017:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10018:3: ruleUnitElement
             {
              before(grammarAccess.getModelElementAccess().getUnitElementsUnitElementParserRuleCall_1_7_0()); 
             pushFollow(FOLLOW_2);
@@ -30717,17 +31003,17 @@
 
 
     // $ANTLR start "rule__JavaImport__PackagenameAssignment_1"
-    // InternalHenshin_text.g:9951:1: rule__JavaImport__PackagenameAssignment_1 : ( ruleEString ) ;
+    // InternalHenshin_text.g:10027:1: rule__JavaImport__PackagenameAssignment_1 : ( ruleEString ) ;
     public final void rule__JavaImport__PackagenameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9955:1: ( ( ruleEString ) )
-            // InternalHenshin_text.g:9956:2: ( ruleEString )
+            // InternalHenshin_text.g:10031:1: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10032:2: ( ruleEString )
             {
-            // InternalHenshin_text.g:9956:2: ( ruleEString )
-            // InternalHenshin_text.g:9957:3: ruleEString
+            // InternalHenshin_text.g:10032:2: ( ruleEString )
+            // InternalHenshin_text.g:10033:3: ruleEString
             {
              before(grammarAccess.getJavaImportAccess().getPackagenameEStringParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -30758,17 +31044,17 @@
 
 
     // $ANTLR start "rule__CheckDangling__CheckDanglingAssignment_1"
-    // InternalHenshin_text.g:9966:1: rule__CheckDangling__CheckDanglingAssignment_1 : ( ruleEBoolean ) ;
+    // InternalHenshin_text.g:10042:1: rule__CheckDangling__CheckDanglingAssignment_1 : ( ruleEBoolean ) ;
     public final void rule__CheckDangling__CheckDanglingAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9970:1: ( ( ruleEBoolean ) )
-            // InternalHenshin_text.g:9971:2: ( ruleEBoolean )
+            // InternalHenshin_text.g:10046:1: ( ( ruleEBoolean ) )
+            // InternalHenshin_text.g:10047:2: ( ruleEBoolean )
             {
-            // InternalHenshin_text.g:9971:2: ( ruleEBoolean )
-            // InternalHenshin_text.g:9972:3: ruleEBoolean
+            // InternalHenshin_text.g:10047:2: ( ruleEBoolean )
+            // InternalHenshin_text.g:10048:3: ruleEBoolean
             {
              before(grammarAccess.getCheckDanglingAccess().getCheckDanglingEBooleanParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -30799,17 +31085,17 @@
 
 
     // $ANTLR start "rule__InjectiveMatching__InjectiveMatchingAssignment_1"
-    // InternalHenshin_text.g:9981:1: rule__InjectiveMatching__InjectiveMatchingAssignment_1 : ( ruleEBoolean ) ;
+    // InternalHenshin_text.g:10057:1: rule__InjectiveMatching__InjectiveMatchingAssignment_1 : ( ruleEBoolean ) ;
     public final void rule__InjectiveMatching__InjectiveMatchingAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:9985:1: ( ( ruleEBoolean ) )
-            // InternalHenshin_text.g:9986:2: ( ruleEBoolean )
+            // InternalHenshin_text.g:10061:1: ( ( ruleEBoolean ) )
+            // InternalHenshin_text.g:10062:2: ( ruleEBoolean )
             {
-            // InternalHenshin_text.g:9986:2: ( ruleEBoolean )
-            // InternalHenshin_text.g:9987:3: ruleEBoolean
+            // InternalHenshin_text.g:10062:2: ( ruleEBoolean )
+            // InternalHenshin_text.g:10063:3: ruleEBoolean
             {
              before(grammarAccess.getInjectiveMatchingAccess().getInjectiveMatchingEBooleanParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -30840,17 +31126,17 @@
 
 
     // $ANTLR start "rule__Conditions__AttributeConditionsAssignment_2"
-    // InternalHenshin_text.g:9996:1: rule__Conditions__AttributeConditionsAssignment_2 : ( ruleExpression ) ;
+    // InternalHenshin_text.g:10072:1: rule__Conditions__AttributeConditionsAssignment_2 : ( ruleExpression ) ;
     public final void rule__Conditions__AttributeConditionsAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10000:1: ( ( ruleExpression ) )
-            // InternalHenshin_text.g:10001:2: ( ruleExpression )
+            // InternalHenshin_text.g:10076:1: ( ( ruleExpression ) )
+            // InternalHenshin_text.g:10077:2: ( ruleExpression )
             {
-            // InternalHenshin_text.g:10001:2: ( ruleExpression )
-            // InternalHenshin_text.g:10002:3: ruleExpression
+            // InternalHenshin_text.g:10077:2: ( ruleExpression )
+            // InternalHenshin_text.g:10078:3: ruleExpression
             {
              before(grammarAccess.getConditionsAccess().getAttributeConditionsExpressionParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -30881,17 +31167,17 @@
 
 
     // $ANTLR start "rule__Conditions__AttributeConditionsAssignment_3_1"
-    // InternalHenshin_text.g:10011:1: rule__Conditions__AttributeConditionsAssignment_3_1 : ( ruleExpression ) ;
+    // InternalHenshin_text.g:10087:1: rule__Conditions__AttributeConditionsAssignment_3_1 : ( ruleExpression ) ;
     public final void rule__Conditions__AttributeConditionsAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10015:1: ( ( ruleExpression ) )
-            // InternalHenshin_text.g:10016:2: ( ruleExpression )
+            // InternalHenshin_text.g:10091:1: ( ( ruleExpression ) )
+            // InternalHenshin_text.g:10092:2: ( ruleExpression )
             {
-            // InternalHenshin_text.g:10016:2: ( ruleExpression )
-            // InternalHenshin_text.g:10017:3: ruleExpression
+            // InternalHenshin_text.g:10092:2: ( ruleExpression )
+            // InternalHenshin_text.g:10093:3: ruleExpression
             {
              before(grammarAccess.getConditionsAccess().getAttributeConditionsExpressionParserRuleCall_3_1_0()); 
             pushFollow(FOLLOW_2);
@@ -30922,17 +31208,17 @@
 
 
     // $ANTLR start "rule__Graph__GraphElementsAssignment_3"
-    // InternalHenshin_text.g:10026:1: rule__Graph__GraphElementsAssignment_3 : ( ruleGraphElements ) ;
+    // InternalHenshin_text.g:10102:1: rule__Graph__GraphElementsAssignment_3 : ( ruleGraphElements ) ;
     public final void rule__Graph__GraphElementsAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10030:1: ( ( ruleGraphElements ) )
-            // InternalHenshin_text.g:10031:2: ( ruleGraphElements )
+            // InternalHenshin_text.g:10106:1: ( ( ruleGraphElements ) )
+            // InternalHenshin_text.g:10107:2: ( ruleGraphElements )
             {
-            // InternalHenshin_text.g:10031:2: ( ruleGraphElements )
-            // InternalHenshin_text.g:10032:3: ruleGraphElements
+            // InternalHenshin_text.g:10107:2: ( ruleGraphElements )
+            // InternalHenshin_text.g:10108:3: ruleGraphElements
             {
              before(grammarAccess.getGraphAccess().getGraphElementsGraphElementsParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -30963,17 +31249,17 @@
 
 
     // $ANTLR start "rule__Edges__EdgesAssignment_2"
-    // InternalHenshin_text.g:10041:1: rule__Edges__EdgesAssignment_2 : ( ruleEdge ) ;
+    // InternalHenshin_text.g:10117:1: rule__Edges__EdgesAssignment_2 : ( ruleEdge ) ;
     public final void rule__Edges__EdgesAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10045:1: ( ( ruleEdge ) )
-            // InternalHenshin_text.g:10046:2: ( ruleEdge )
+            // InternalHenshin_text.g:10121:1: ( ( ruleEdge ) )
+            // InternalHenshin_text.g:10122:2: ( ruleEdge )
             {
-            // InternalHenshin_text.g:10046:2: ( ruleEdge )
-            // InternalHenshin_text.g:10047:3: ruleEdge
+            // InternalHenshin_text.g:10122:2: ( ruleEdge )
+            // InternalHenshin_text.g:10123:3: ruleEdge
             {
              before(grammarAccess.getEdgesAccess().getEdgesEdgeParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -31004,17 +31290,17 @@
 
 
     // $ANTLR start "rule__Edges__EdgesAssignment_3_1"
-    // InternalHenshin_text.g:10056:1: rule__Edges__EdgesAssignment_3_1 : ( ruleEdge ) ;
+    // InternalHenshin_text.g:10132:1: rule__Edges__EdgesAssignment_3_1 : ( ruleEdge ) ;
     public final void rule__Edges__EdgesAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10060:1: ( ( ruleEdge ) )
-            // InternalHenshin_text.g:10061:2: ( ruleEdge )
+            // InternalHenshin_text.g:10136:1: ( ( ruleEdge ) )
+            // InternalHenshin_text.g:10137:2: ( ruleEdge )
             {
-            // InternalHenshin_text.g:10061:2: ( ruleEdge )
-            // InternalHenshin_text.g:10062:3: ruleEdge
+            // InternalHenshin_text.g:10137:2: ( ruleEdge )
+            // InternalHenshin_text.g:10138:3: ruleEdge
             {
              before(grammarAccess.getEdgesAccess().getEdgesEdgeParserRuleCall_3_1_0()); 
             pushFollow(FOLLOW_2);
@@ -31045,17 +31331,17 @@
 
 
     // $ANTLR start "rule__Edge__ActiontypeAssignment_1"
-    // InternalHenshin_text.g:10071:1: rule__Edge__ActiontypeAssignment_1 : ( ruleActionType ) ;
+    // InternalHenshin_text.g:10147:1: rule__Edge__ActiontypeAssignment_1 : ( ruleActionType ) ;
     public final void rule__Edge__ActiontypeAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10075:1: ( ( ruleActionType ) )
-            // InternalHenshin_text.g:10076:2: ( ruleActionType )
+            // InternalHenshin_text.g:10151:1: ( ( ruleActionType ) )
+            // InternalHenshin_text.g:10152:2: ( ruleActionType )
             {
-            // InternalHenshin_text.g:10076:2: ( ruleActionType )
-            // InternalHenshin_text.g:10077:3: ruleActionType
+            // InternalHenshin_text.g:10152:2: ( ruleActionType )
+            // InternalHenshin_text.g:10153:3: ruleActionType
             {
              before(grammarAccess.getEdgeAccess().getActiontypeActionTypeParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -31086,21 +31372,21 @@
 
 
     // $ANTLR start "rule__Edge__SourceAssignment_2"
-    // InternalHenshin_text.g:10086:1: rule__Edge__SourceAssignment_2 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:10162:1: rule__Edge__SourceAssignment_2 : ( ( RULE_ID ) ) ;
     public final void rule__Edge__SourceAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10090:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:10091:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10166:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:10167:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:10091:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10092:3: ( RULE_ID )
+            // InternalHenshin_text.g:10167:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10168:3: ( RULE_ID )
             {
              before(grammarAccess.getEdgeAccess().getSourceRuleNodeTypesCrossReference_2_0()); 
-            // InternalHenshin_text.g:10093:3: ( RULE_ID )
-            // InternalHenshin_text.g:10094:4: RULE_ID
+            // InternalHenshin_text.g:10169:3: ( RULE_ID )
+            // InternalHenshin_text.g:10170:4: RULE_ID
             {
              before(grammarAccess.getEdgeAccess().getSourceRuleNodeTypesIDTerminalRuleCall_2_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -31131,21 +31417,21 @@
 
 
     // $ANTLR start "rule__Edge__TargetAssignment_4"
-    // InternalHenshin_text.g:10105:1: rule__Edge__TargetAssignment_4 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:10181:1: rule__Edge__TargetAssignment_4 : ( ( RULE_ID ) ) ;
     public final void rule__Edge__TargetAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10109:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:10110:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10185:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:10186:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:10110:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10111:3: ( RULE_ID )
+            // InternalHenshin_text.g:10186:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10187:3: ( RULE_ID )
             {
              before(grammarAccess.getEdgeAccess().getTargetRuleNodeTypesCrossReference_4_0()); 
-            // InternalHenshin_text.g:10112:3: ( RULE_ID )
-            // InternalHenshin_text.g:10113:4: RULE_ID
+            // InternalHenshin_text.g:10188:3: ( RULE_ID )
+            // InternalHenshin_text.g:10189:4: RULE_ID
             {
              before(grammarAccess.getEdgeAccess().getTargetRuleNodeTypesIDTerminalRuleCall_4_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -31176,21 +31462,21 @@
 
 
     // $ANTLR start "rule__Edge__TypeAssignment_6"
-    // InternalHenshin_text.g:10124:1: rule__Edge__TypeAssignment_6 : ( ( ruleEString ) ) ;
+    // InternalHenshin_text.g:10200:1: rule__Edge__TypeAssignment_6 : ( ( ruleEString ) ) ;
     public final void rule__Edge__TypeAssignment_6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10128:1: ( ( ( ruleEString ) ) )
-            // InternalHenshin_text.g:10129:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10204:1: ( ( ( ruleEString ) ) )
+            // InternalHenshin_text.g:10205:2: ( ( ruleEString ) )
             {
-            // InternalHenshin_text.g:10129:2: ( ( ruleEString ) )
-            // InternalHenshin_text.g:10130:3: ( ruleEString )
+            // InternalHenshin_text.g:10205:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10206:3: ( ruleEString )
             {
              before(grammarAccess.getEdgeAccess().getTypeEReferenceCrossReference_6_0()); 
-            // InternalHenshin_text.g:10131:3: ( ruleEString )
-            // InternalHenshin_text.g:10132:4: ruleEString
+            // InternalHenshin_text.g:10207:3: ( ruleEString )
+            // InternalHenshin_text.g:10208:4: ruleEString
             {
              before(grammarAccess.getEdgeAccess().getTypeEReferenceEStringParserRuleCall_6_0_1()); 
             pushFollow(FOLLOW_2);
@@ -31225,17 +31511,17 @@
 
 
     // $ANTLR start "rule__Node__ActiontypeAssignment_0"
-    // InternalHenshin_text.g:10143:1: rule__Node__ActiontypeAssignment_0 : ( ruleActionType ) ;
+    // InternalHenshin_text.g:10219:1: rule__Node__ActiontypeAssignment_0 : ( ruleActionType ) ;
     public final void rule__Node__ActiontypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10147:1: ( ( ruleActionType ) )
-            // InternalHenshin_text.g:10148:2: ( ruleActionType )
+            // InternalHenshin_text.g:10223:1: ( ( ruleActionType ) )
+            // InternalHenshin_text.g:10224:2: ( ruleActionType )
             {
-            // InternalHenshin_text.g:10148:2: ( ruleActionType )
-            // InternalHenshin_text.g:10149:3: ruleActionType
+            // InternalHenshin_text.g:10224:2: ( ruleActionType )
+            // InternalHenshin_text.g:10225:3: ruleActionType
             {
              before(grammarAccess.getNodeAccess().getActiontypeActionTypeParserRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -31266,17 +31552,17 @@
 
 
     // $ANTLR start "rule__Node__NameAssignment_2"
-    // InternalHenshin_text.g:10158:1: rule__Node__NameAssignment_2 : ( RULE_ID ) ;
+    // InternalHenshin_text.g:10234:1: rule__Node__NameAssignment_2 : ( RULE_ID ) ;
     public final void rule__Node__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10162:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10163:2: ( RULE_ID )
+            // InternalHenshin_text.g:10238:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10239:2: ( RULE_ID )
             {
-            // InternalHenshin_text.g:10163:2: ( RULE_ID )
-            // InternalHenshin_text.g:10164:3: RULE_ID
+            // InternalHenshin_text.g:10239:2: ( RULE_ID )
+            // InternalHenshin_text.g:10240:3: RULE_ID
             {
              before(grammarAccess.getNodeAccess().getNameIDTerminalRuleCall_2_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -31303,21 +31589,21 @@
 
 
     // $ANTLR start "rule__Node__NodetypeAssignment_4"
-    // InternalHenshin_text.g:10173:1: rule__Node__NodetypeAssignment_4 : ( ( ruleEString ) ) ;
+    // InternalHenshin_text.g:10249:1: rule__Node__NodetypeAssignment_4 : ( ( ruleEString ) ) ;
     public final void rule__Node__NodetypeAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10177:1: ( ( ( ruleEString ) ) )
-            // InternalHenshin_text.g:10178:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10253:1: ( ( ( ruleEString ) ) )
+            // InternalHenshin_text.g:10254:2: ( ( ruleEString ) )
             {
-            // InternalHenshin_text.g:10178:2: ( ( ruleEString ) )
-            // InternalHenshin_text.g:10179:3: ( ruleEString )
+            // InternalHenshin_text.g:10254:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10255:3: ( ruleEString )
             {
              before(grammarAccess.getNodeAccess().getNodetypeEClassCrossReference_4_0()); 
-            // InternalHenshin_text.g:10180:3: ( ruleEString )
-            // InternalHenshin_text.g:10181:4: ruleEString
+            // InternalHenshin_text.g:10256:3: ( ruleEString )
+            // InternalHenshin_text.g:10257:4: ruleEString
             {
              before(grammarAccess.getNodeAccess().getNodetypeEClassEStringParserRuleCall_4_0_1()); 
             pushFollow(FOLLOW_2);
@@ -31352,17 +31638,17 @@
 
 
     // $ANTLR start "rule__Node__AttributeAssignment_5_1"
-    // InternalHenshin_text.g:10192:1: rule__Node__AttributeAssignment_5_1 : ( ruleAttribute ) ;
+    // InternalHenshin_text.g:10268:1: rule__Node__AttributeAssignment_5_1 : ( ruleAttribute ) ;
     public final void rule__Node__AttributeAssignment_5_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10196:1: ( ( ruleAttribute ) )
-            // InternalHenshin_text.g:10197:2: ( ruleAttribute )
+            // InternalHenshin_text.g:10272:1: ( ( ruleAttribute ) )
+            // InternalHenshin_text.g:10273:2: ( ruleAttribute )
             {
-            // InternalHenshin_text.g:10197:2: ( ruleAttribute )
-            // InternalHenshin_text.g:10198:3: ruleAttribute
+            // InternalHenshin_text.g:10273:2: ( ruleAttribute )
+            // InternalHenshin_text.g:10274:3: ruleAttribute
             {
              before(grammarAccess.getNodeAccess().getAttributeAttributeParserRuleCall_5_1_0()); 
             pushFollow(FOLLOW_2);
@@ -31393,21 +31679,21 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__NameAssignment_1"
-    // InternalHenshin_text.g:10207:1: rule__MultiRuleReuseNode__NameAssignment_1 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:10283:1: rule__MultiRuleReuseNode__NameAssignment_1 : ( ( RULE_ID ) ) ;
     public final void rule__MultiRuleReuseNode__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10211:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:10212:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10287:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:10288:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:10212:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10213:3: ( RULE_ID )
+            // InternalHenshin_text.g:10288:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10289:3: ( RULE_ID )
             {
              before(grammarAccess.getMultiRuleReuseNodeAccess().getNameNodeCrossReference_1_0()); 
-            // InternalHenshin_text.g:10214:3: ( RULE_ID )
-            // InternalHenshin_text.g:10215:4: RULE_ID
+            // InternalHenshin_text.g:10290:3: ( RULE_ID )
+            // InternalHenshin_text.g:10291:4: RULE_ID
             {
              before(grammarAccess.getMultiRuleReuseNodeAccess().getNameNodeIDTerminalRuleCall_1_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -31438,17 +31724,17 @@
 
 
     // $ANTLR start "rule__MultiRuleReuseNode__AttributeAssignment_2_1"
-    // InternalHenshin_text.g:10226:1: rule__MultiRuleReuseNode__AttributeAssignment_2_1 : ( ruleAttribute ) ;
+    // InternalHenshin_text.g:10302:1: rule__MultiRuleReuseNode__AttributeAssignment_2_1 : ( ruleAttribute ) ;
     public final void rule__MultiRuleReuseNode__AttributeAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10230:1: ( ( ruleAttribute ) )
-            // InternalHenshin_text.g:10231:2: ( ruleAttribute )
+            // InternalHenshin_text.g:10306:1: ( ( ruleAttribute ) )
+            // InternalHenshin_text.g:10307:2: ( ruleAttribute )
             {
-            // InternalHenshin_text.g:10231:2: ( ruleAttribute )
-            // InternalHenshin_text.g:10232:3: ruleAttribute
+            // InternalHenshin_text.g:10307:2: ( ruleAttribute )
+            // InternalHenshin_text.g:10308:3: ruleAttribute
             {
              before(grammarAccess.getMultiRuleReuseNodeAccess().getAttributeAttributeParserRuleCall_2_1_0()); 
             pushFollow(FOLLOW_2);
@@ -31479,17 +31765,17 @@
 
 
     // $ANTLR start "rule__Attribute__ActiontypeAssignment_0_0"
-    // InternalHenshin_text.g:10241:1: rule__Attribute__ActiontypeAssignment_0_0 : ( ruleActionType ) ;
+    // InternalHenshin_text.g:10317:1: rule__Attribute__ActiontypeAssignment_0_0 : ( ruleActionType ) ;
     public final void rule__Attribute__ActiontypeAssignment_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10245:1: ( ( ruleActionType ) )
-            // InternalHenshin_text.g:10246:2: ( ruleActionType )
+            // InternalHenshin_text.g:10321:1: ( ( ruleActionType ) )
+            // InternalHenshin_text.g:10322:2: ( ruleActionType )
             {
-            // InternalHenshin_text.g:10246:2: ( ruleActionType )
-            // InternalHenshin_text.g:10247:3: ruleActionType
+            // InternalHenshin_text.g:10322:2: ( ruleActionType )
+            // InternalHenshin_text.g:10323:3: ruleActionType
             {
              before(grammarAccess.getAttributeAccess().getActiontypeActionTypeParserRuleCall_0_0_0()); 
             pushFollow(FOLLOW_2);
@@ -31520,21 +31806,21 @@
 
 
     // $ANTLR start "rule__Attribute__NameAssignment_0_1"
-    // InternalHenshin_text.g:10256:1: rule__Attribute__NameAssignment_0_1 : ( ( ruleEString ) ) ;
+    // InternalHenshin_text.g:10332:1: rule__Attribute__NameAssignment_0_1 : ( ( ruleEString ) ) ;
     public final void rule__Attribute__NameAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10260:1: ( ( ( ruleEString ) ) )
-            // InternalHenshin_text.g:10261:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10336:1: ( ( ( ruleEString ) ) )
+            // InternalHenshin_text.g:10337:2: ( ( ruleEString ) )
             {
-            // InternalHenshin_text.g:10261:2: ( ( ruleEString ) )
-            // InternalHenshin_text.g:10262:3: ( ruleEString )
+            // InternalHenshin_text.g:10337:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10338:3: ( ruleEString )
             {
              before(grammarAccess.getAttributeAccess().getNameEAttributeCrossReference_0_1_0()); 
-            // InternalHenshin_text.g:10263:3: ( ruleEString )
-            // InternalHenshin_text.g:10264:4: ruleEString
+            // InternalHenshin_text.g:10339:3: ( ruleEString )
+            // InternalHenshin_text.g:10340:4: ruleEString
             {
              before(grammarAccess.getAttributeAccess().getNameEAttributeEStringParserRuleCall_0_1_0_1()); 
             pushFollow(FOLLOW_2);
@@ -31569,17 +31855,17 @@
 
 
     // $ANTLR start "rule__Attribute__ValueAssignment_0_3"
-    // InternalHenshin_text.g:10275:1: rule__Attribute__ValueAssignment_0_3 : ( ruleExpression ) ;
+    // InternalHenshin_text.g:10351:1: rule__Attribute__ValueAssignment_0_3 : ( ruleExpression ) ;
     public final void rule__Attribute__ValueAssignment_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10279:1: ( ( ruleExpression ) )
-            // InternalHenshin_text.g:10280:2: ( ruleExpression )
+            // InternalHenshin_text.g:10355:1: ( ( ruleExpression ) )
+            // InternalHenshin_text.g:10356:2: ( ruleExpression )
             {
-            // InternalHenshin_text.g:10280:2: ( ruleExpression )
-            // InternalHenshin_text.g:10281:3: ruleExpression
+            // InternalHenshin_text.g:10356:2: ( ruleExpression )
+            // InternalHenshin_text.g:10357:3: ruleExpression
             {
              before(grammarAccess.getAttributeAccess().getValueExpressionParserRuleCall_0_3_0()); 
             pushFollow(FOLLOW_2);
@@ -31610,24 +31896,24 @@
 
 
     // $ANTLR start "rule__Attribute__UpdateAssignment_1_0"
-    // InternalHenshin_text.g:10290:1: rule__Attribute__UpdateAssignment_1_0 : ( ( 'set' ) ) ;
+    // InternalHenshin_text.g:10366:1: rule__Attribute__UpdateAssignment_1_0 : ( ( 'set' ) ) ;
     public final void rule__Attribute__UpdateAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10294:1: ( ( ( 'set' ) ) )
-            // InternalHenshin_text.g:10295:2: ( ( 'set' ) )
+            // InternalHenshin_text.g:10370:1: ( ( ( 'set' ) ) )
+            // InternalHenshin_text.g:10371:2: ( ( 'set' ) )
             {
-            // InternalHenshin_text.g:10295:2: ( ( 'set' ) )
-            // InternalHenshin_text.g:10296:3: ( 'set' )
+            // InternalHenshin_text.g:10371:2: ( ( 'set' ) )
+            // InternalHenshin_text.g:10372:3: ( 'set' )
             {
              before(grammarAccess.getAttributeAccess().getUpdateSetKeyword_1_0_0()); 
-            // InternalHenshin_text.g:10297:3: ( 'set' )
-            // InternalHenshin_text.g:10298:4: 'set'
+            // InternalHenshin_text.g:10373:3: ( 'set' )
+            // InternalHenshin_text.g:10374:4: 'set'
             {
              before(grammarAccess.getAttributeAccess().getUpdateSetKeyword_1_0_0()); 
-            match(input,102,FOLLOW_2); 
+            match(input,106,FOLLOW_2); 
              after(grammarAccess.getAttributeAccess().getUpdateSetKeyword_1_0_0()); 
 
             }
@@ -31655,21 +31941,21 @@
 
 
     // $ANTLR start "rule__Attribute__NameAssignment_1_1"
-    // InternalHenshin_text.g:10309:1: rule__Attribute__NameAssignment_1_1 : ( ( ruleEString ) ) ;
+    // InternalHenshin_text.g:10385:1: rule__Attribute__NameAssignment_1_1 : ( ( ruleEString ) ) ;
     public final void rule__Attribute__NameAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10313:1: ( ( ( ruleEString ) ) )
-            // InternalHenshin_text.g:10314:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10389:1: ( ( ( ruleEString ) ) )
+            // InternalHenshin_text.g:10390:2: ( ( ruleEString ) )
             {
-            // InternalHenshin_text.g:10314:2: ( ( ruleEString ) )
-            // InternalHenshin_text.g:10315:3: ( ruleEString )
+            // InternalHenshin_text.g:10390:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10391:3: ( ruleEString )
             {
              before(grammarAccess.getAttributeAccess().getNameEAttributeCrossReference_1_1_0()); 
-            // InternalHenshin_text.g:10316:3: ( ruleEString )
-            // InternalHenshin_text.g:10317:4: ruleEString
+            // InternalHenshin_text.g:10392:3: ( ruleEString )
+            // InternalHenshin_text.g:10393:4: ruleEString
             {
              before(grammarAccess.getAttributeAccess().getNameEAttributeEStringParserRuleCall_1_1_0_1()); 
             pushFollow(FOLLOW_2);
@@ -31704,17 +31990,17 @@
 
 
     // $ANTLR start "rule__Attribute__ValueAssignment_1_3"
-    // InternalHenshin_text.g:10328:1: rule__Attribute__ValueAssignment_1_3 : ( ruleExpression ) ;
+    // InternalHenshin_text.g:10404:1: rule__Attribute__ValueAssignment_1_3 : ( ruleExpression ) ;
     public final void rule__Attribute__ValueAssignment_1_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10332:1: ( ( ruleExpression ) )
-            // InternalHenshin_text.g:10333:2: ( ruleExpression )
+            // InternalHenshin_text.g:10408:1: ( ( ruleExpression ) )
+            // InternalHenshin_text.g:10409:2: ( ruleExpression )
             {
-            // InternalHenshin_text.g:10333:2: ( ruleExpression )
-            // InternalHenshin_text.g:10334:3: ruleExpression
+            // InternalHenshin_text.g:10409:2: ( ruleExpression )
+            // InternalHenshin_text.g:10410:3: ruleExpression
             {
              before(grammarAccess.getAttributeAccess().getValueExpressionParserRuleCall_1_3_0()); 
             pushFollow(FOLLOW_2);
@@ -31745,17 +32031,17 @@
 
 
     // $ANTLR start "rule__MultiRule__NameAssignment_1"
-    // InternalHenshin_text.g:10343:1: rule__MultiRule__NameAssignment_1 : ( RULE_ID ) ;
+    // InternalHenshin_text.g:10419:1: rule__MultiRule__NameAssignment_1 : ( RULE_ID ) ;
     public final void rule__MultiRule__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10347:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10348:2: ( RULE_ID )
+            // InternalHenshin_text.g:10423:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10424:2: ( RULE_ID )
             {
-            // InternalHenshin_text.g:10348:2: ( RULE_ID )
-            // InternalHenshin_text.g:10349:3: RULE_ID
+            // InternalHenshin_text.g:10424:2: ( RULE_ID )
+            // InternalHenshin_text.g:10425:3: RULE_ID
             {
              before(grammarAccess.getMultiRuleAccess().getNameIDTerminalRuleCall_1_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -31782,17 +32068,17 @@
 
 
     // $ANTLR start "rule__MultiRule__MultiruleElementsAssignment_3"
-    // InternalHenshin_text.g:10358:1: rule__MultiRule__MultiruleElementsAssignment_3 : ( ruleRuleElement ) ;
+    // InternalHenshin_text.g:10434:1: rule__MultiRule__MultiruleElementsAssignment_3 : ( ruleRuleElement ) ;
     public final void rule__MultiRule__MultiruleElementsAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10362:1: ( ( ruleRuleElement ) )
-            // InternalHenshin_text.g:10363:2: ( ruleRuleElement )
+            // InternalHenshin_text.g:10438:1: ( ( ruleRuleElement ) )
+            // InternalHenshin_text.g:10439:2: ( ruleRuleElement )
             {
-            // InternalHenshin_text.g:10363:2: ( ruleRuleElement )
-            // InternalHenshin_text.g:10364:3: ruleRuleElement
+            // InternalHenshin_text.g:10439:2: ( ruleRuleElement )
+            // InternalHenshin_text.g:10440:3: ruleRuleElement
             {
              before(grammarAccess.getMultiRuleAccess().getMultiruleElementsRuleElementParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -31823,17 +32109,17 @@
 
 
     // $ANTLR start "rule__Formula__FormulaAssignment_3"
-    // InternalHenshin_text.g:10373:1: rule__Formula__FormulaAssignment_3 : ( ruleLogic ) ;
+    // InternalHenshin_text.g:10449:1: rule__Formula__FormulaAssignment_3 : ( ruleLogic ) ;
     public final void rule__Formula__FormulaAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10377:1: ( ( ruleLogic ) )
-            // InternalHenshin_text.g:10378:2: ( ruleLogic )
+            // InternalHenshin_text.g:10453:1: ( ( ruleLogic ) )
+            // InternalHenshin_text.g:10454:2: ( ruleLogic )
             {
-            // InternalHenshin_text.g:10378:2: ( ruleLogic )
-            // InternalHenshin_text.g:10379:3: ruleLogic
+            // InternalHenshin_text.g:10454:2: ( ruleLogic )
+            // InternalHenshin_text.g:10455:3: ruleLogic
             {
              before(grammarAccess.getFormulaAccess().getFormulaLogicParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -31864,17 +32150,17 @@
 
 
     // $ANTLR start "rule__Formula__ConditionGraphsAssignment_4"
-    // InternalHenshin_text.g:10388:1: rule__Formula__ConditionGraphsAssignment_4 : ( ruleConditionGraph ) ;
+    // InternalHenshin_text.g:10464:1: rule__Formula__ConditionGraphsAssignment_4 : ( ruleConditionGraph ) ;
     public final void rule__Formula__ConditionGraphsAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10392:1: ( ( ruleConditionGraph ) )
-            // InternalHenshin_text.g:10393:2: ( ruleConditionGraph )
+            // InternalHenshin_text.g:10468:1: ( ( ruleConditionGraph ) )
+            // InternalHenshin_text.g:10469:2: ( ruleConditionGraph )
             {
-            // InternalHenshin_text.g:10393:2: ( ruleConditionGraph )
-            // InternalHenshin_text.g:10394:3: ruleConditionGraph
+            // InternalHenshin_text.g:10469:2: ( ruleConditionGraph )
+            // InternalHenshin_text.g:10470:3: ruleConditionGraph
             {
              before(grammarAccess.getFormulaAccess().getConditionGraphsConditionGraphParserRuleCall_4_0()); 
             pushFollow(FOLLOW_2);
@@ -31905,21 +32191,21 @@
 
 
     // $ANTLR start "rule__ORorXOR__OpAssignment_1_1"
-    // InternalHenshin_text.g:10403:1: rule__ORorXOR__OpAssignment_1_1 : ( ( rule__ORorXOR__OpAlternatives_1_1_0 ) ) ;
+    // InternalHenshin_text.g:10479:1: rule__ORorXOR__OpAssignment_1_1 : ( ( rule__ORorXOR__OpAlternatives_1_1_0 ) ) ;
     public final void rule__ORorXOR__OpAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10407:1: ( ( ( rule__ORorXOR__OpAlternatives_1_1_0 ) ) )
-            // InternalHenshin_text.g:10408:2: ( ( rule__ORorXOR__OpAlternatives_1_1_0 ) )
+            // InternalHenshin_text.g:10483:1: ( ( ( rule__ORorXOR__OpAlternatives_1_1_0 ) ) )
+            // InternalHenshin_text.g:10484:2: ( ( rule__ORorXOR__OpAlternatives_1_1_0 ) )
             {
-            // InternalHenshin_text.g:10408:2: ( ( rule__ORorXOR__OpAlternatives_1_1_0 ) )
-            // InternalHenshin_text.g:10409:3: ( rule__ORorXOR__OpAlternatives_1_1_0 )
+            // InternalHenshin_text.g:10484:2: ( ( rule__ORorXOR__OpAlternatives_1_1_0 ) )
+            // InternalHenshin_text.g:10485:3: ( rule__ORorXOR__OpAlternatives_1_1_0 )
             {
              before(grammarAccess.getORorXORAccess().getOpAlternatives_1_1_0()); 
-            // InternalHenshin_text.g:10410:3: ( rule__ORorXOR__OpAlternatives_1_1_0 )
-            // InternalHenshin_text.g:10410:4: rule__ORorXOR__OpAlternatives_1_1_0
+            // InternalHenshin_text.g:10486:3: ( rule__ORorXOR__OpAlternatives_1_1_0 )
+            // InternalHenshin_text.g:10486:4: rule__ORorXOR__OpAlternatives_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__ORorXOR__OpAlternatives_1_1_0();
@@ -31952,17 +32238,17 @@
 
 
     // $ANTLR start "rule__ORorXOR__RightAssignment_1_2"
-    // InternalHenshin_text.g:10418:1: rule__ORorXOR__RightAssignment_1_2 : ( ruleAND ) ;
+    // InternalHenshin_text.g:10494:1: rule__ORorXOR__RightAssignment_1_2 : ( ruleAND ) ;
     public final void rule__ORorXOR__RightAssignment_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10422:1: ( ( ruleAND ) )
-            // InternalHenshin_text.g:10423:2: ( ruleAND )
+            // InternalHenshin_text.g:10498:1: ( ( ruleAND ) )
+            // InternalHenshin_text.g:10499:2: ( ruleAND )
             {
-            // InternalHenshin_text.g:10423:2: ( ruleAND )
-            // InternalHenshin_text.g:10424:3: ruleAND
+            // InternalHenshin_text.g:10499:2: ( ruleAND )
+            // InternalHenshin_text.g:10500:3: ruleAND
             {
              before(grammarAccess.getORorXORAccess().getRightANDParserRuleCall_1_2_0()); 
             pushFollow(FOLLOW_2);
@@ -31993,17 +32279,17 @@
 
 
     // $ANTLR start "rule__AND__RightAssignment_1_2"
-    // InternalHenshin_text.g:10433:1: rule__AND__RightAssignment_1_2 : ( rulePrimary ) ;
+    // InternalHenshin_text.g:10509:1: rule__AND__RightAssignment_1_2 : ( rulePrimary ) ;
     public final void rule__AND__RightAssignment_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10437:1: ( ( rulePrimary ) )
-            // InternalHenshin_text.g:10438:2: ( rulePrimary )
+            // InternalHenshin_text.g:10513:1: ( ( rulePrimary ) )
+            // InternalHenshin_text.g:10514:2: ( rulePrimary )
             {
-            // InternalHenshin_text.g:10438:2: ( rulePrimary )
-            // InternalHenshin_text.g:10439:3: rulePrimary
+            // InternalHenshin_text.g:10514:2: ( rulePrimary )
+            // InternalHenshin_text.g:10515:3: rulePrimary
             {
              before(grammarAccess.getANDAccess().getRightPrimaryParserRuleCall_1_2_0()); 
             pushFollow(FOLLOW_2);
@@ -32034,17 +32320,17 @@
 
 
     // $ANTLR start "rule__Primary__NegationAssignment_1_2"
-    // InternalHenshin_text.g:10448:1: rule__Primary__NegationAssignment_1_2 : ( rulePrimary ) ;
+    // InternalHenshin_text.g:10524:1: rule__Primary__NegationAssignment_1_2 : ( rulePrimary ) ;
     public final void rule__Primary__NegationAssignment_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10452:1: ( ( rulePrimary ) )
-            // InternalHenshin_text.g:10453:2: ( rulePrimary )
+            // InternalHenshin_text.g:10528:1: ( ( rulePrimary ) )
+            // InternalHenshin_text.g:10529:2: ( rulePrimary )
             {
-            // InternalHenshin_text.g:10453:2: ( rulePrimary )
-            // InternalHenshin_text.g:10454:3: rulePrimary
+            // InternalHenshin_text.g:10529:2: ( rulePrimary )
+            // InternalHenshin_text.g:10530:3: rulePrimary
             {
              before(grammarAccess.getPrimaryAccess().getNegationPrimaryParserRuleCall_1_2_0()); 
             pushFollow(FOLLOW_2);
@@ -32075,21 +32361,21 @@
 
 
     // $ANTLR start "rule__Atomic__ConditionGraphRefAssignment_1"
-    // InternalHenshin_text.g:10463:1: rule__Atomic__ConditionGraphRefAssignment_1 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:10539:1: rule__Atomic__ConditionGraphRefAssignment_1 : ( ( RULE_ID ) ) ;
     public final void rule__Atomic__ConditionGraphRefAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10467:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:10468:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10543:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:10544:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:10468:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10469:3: ( RULE_ID )
+            // InternalHenshin_text.g:10544:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10545:3: ( RULE_ID )
             {
              before(grammarAccess.getAtomicAccess().getConditionGraphRefConditionGraphCrossReference_1_0()); 
-            // InternalHenshin_text.g:10470:3: ( RULE_ID )
-            // InternalHenshin_text.g:10471:4: RULE_ID
+            // InternalHenshin_text.g:10546:3: ( RULE_ID )
+            // InternalHenshin_text.g:10547:4: RULE_ID
             {
              before(grammarAccess.getAtomicAccess().getConditionGraphRefConditionGraphIDTerminalRuleCall_1_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32120,17 +32406,17 @@
 
 
     // $ANTLR start "rule__ConditionGraph__NameAssignment_1"
-    // InternalHenshin_text.g:10482:1: rule__ConditionGraph__NameAssignment_1 : ( RULE_ID ) ;
+    // InternalHenshin_text.g:10558:1: rule__ConditionGraph__NameAssignment_1 : ( RULE_ID ) ;
     public final void rule__ConditionGraph__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10486:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10487:2: ( RULE_ID )
+            // InternalHenshin_text.g:10562:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10563:2: ( RULE_ID )
             {
-            // InternalHenshin_text.g:10487:2: ( RULE_ID )
-            // InternalHenshin_text.g:10488:3: RULE_ID
+            // InternalHenshin_text.g:10563:2: ( RULE_ID )
+            // InternalHenshin_text.g:10564:3: RULE_ID
             {
              before(grammarAccess.getConditionGraphAccess().getNameIDTerminalRuleCall_1_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32157,17 +32443,17 @@
 
 
     // $ANTLR start "rule__ConditionGraph__ConditionGraphElementsAssignment_3"
-    // InternalHenshin_text.g:10497:1: rule__ConditionGraph__ConditionGraphElementsAssignment_3 : ( ruleConditionGraphElements ) ;
+    // InternalHenshin_text.g:10573:1: rule__ConditionGraph__ConditionGraphElementsAssignment_3 : ( ruleConditionGraphElements ) ;
     public final void rule__ConditionGraph__ConditionGraphElementsAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10501:1: ( ( ruleConditionGraphElements ) )
-            // InternalHenshin_text.g:10502:2: ( ruleConditionGraphElements )
+            // InternalHenshin_text.g:10577:1: ( ( ruleConditionGraphElements ) )
+            // InternalHenshin_text.g:10578:2: ( ruleConditionGraphElements )
             {
-            // InternalHenshin_text.g:10502:2: ( ruleConditionGraphElements )
-            // InternalHenshin_text.g:10503:3: ruleConditionGraphElements
+            // InternalHenshin_text.g:10578:2: ( ruleConditionGraphElements )
+            // InternalHenshin_text.g:10579:3: ruleConditionGraphElements
             {
              before(grammarAccess.getConditionGraphAccess().getConditionGraphElementsConditionGraphElementsParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -32198,17 +32484,17 @@
 
 
     // $ANTLR start "rule__ConditionEdges__EdgesAssignment_2"
-    // InternalHenshin_text.g:10512:1: rule__ConditionEdges__EdgesAssignment_2 : ( ruleConditionEdge ) ;
+    // InternalHenshin_text.g:10588:1: rule__ConditionEdges__EdgesAssignment_2 : ( ruleConditionEdge ) ;
     public final void rule__ConditionEdges__EdgesAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10516:1: ( ( ruleConditionEdge ) )
-            // InternalHenshin_text.g:10517:2: ( ruleConditionEdge )
+            // InternalHenshin_text.g:10592:1: ( ( ruleConditionEdge ) )
+            // InternalHenshin_text.g:10593:2: ( ruleConditionEdge )
             {
-            // InternalHenshin_text.g:10517:2: ( ruleConditionEdge )
-            // InternalHenshin_text.g:10518:3: ruleConditionEdge
+            // InternalHenshin_text.g:10593:2: ( ruleConditionEdge )
+            // InternalHenshin_text.g:10594:3: ruleConditionEdge
             {
              before(grammarAccess.getConditionEdgesAccess().getEdgesConditionEdgeParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -32239,17 +32525,17 @@
 
 
     // $ANTLR start "rule__ConditionEdges__EdgesAssignment_3_1"
-    // InternalHenshin_text.g:10527:1: rule__ConditionEdges__EdgesAssignment_3_1 : ( ruleConditionEdge ) ;
+    // InternalHenshin_text.g:10603:1: rule__ConditionEdges__EdgesAssignment_3_1 : ( ruleConditionEdge ) ;
     public final void rule__ConditionEdges__EdgesAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10531:1: ( ( ruleConditionEdge ) )
-            // InternalHenshin_text.g:10532:2: ( ruleConditionEdge )
+            // InternalHenshin_text.g:10607:1: ( ( ruleConditionEdge ) )
+            // InternalHenshin_text.g:10608:2: ( ruleConditionEdge )
             {
-            // InternalHenshin_text.g:10532:2: ( ruleConditionEdge )
-            // InternalHenshin_text.g:10533:3: ruleConditionEdge
+            // InternalHenshin_text.g:10608:2: ( ruleConditionEdge )
+            // InternalHenshin_text.g:10609:3: ruleConditionEdge
             {
              before(grammarAccess.getConditionEdgesAccess().getEdgesConditionEdgeParserRuleCall_3_1_0()); 
             pushFollow(FOLLOW_2);
@@ -32280,21 +32566,21 @@
 
 
     // $ANTLR start "rule__ConditionEdge__SourceAssignment_1"
-    // InternalHenshin_text.g:10542:1: rule__ConditionEdge__SourceAssignment_1 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:10618:1: rule__ConditionEdge__SourceAssignment_1 : ( ( RULE_ID ) ) ;
     public final void rule__ConditionEdge__SourceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10546:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:10547:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10622:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:10623:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:10547:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10548:3: ( RULE_ID )
+            // InternalHenshin_text.g:10623:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10624:3: ( RULE_ID )
             {
              before(grammarAccess.getConditionEdgeAccess().getSourceConditionNodeTypesCrossReference_1_0()); 
-            // InternalHenshin_text.g:10549:3: ( RULE_ID )
-            // InternalHenshin_text.g:10550:4: RULE_ID
+            // InternalHenshin_text.g:10625:3: ( RULE_ID )
+            // InternalHenshin_text.g:10626:4: RULE_ID
             {
              before(grammarAccess.getConditionEdgeAccess().getSourceConditionNodeTypesIDTerminalRuleCall_1_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32325,21 +32611,21 @@
 
 
     // $ANTLR start "rule__ConditionEdge__TargetAssignment_3"
-    // InternalHenshin_text.g:10561:1: rule__ConditionEdge__TargetAssignment_3 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:10637:1: rule__ConditionEdge__TargetAssignment_3 : ( ( RULE_ID ) ) ;
     public final void rule__ConditionEdge__TargetAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10565:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:10566:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10641:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:10642:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:10566:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10567:3: ( RULE_ID )
+            // InternalHenshin_text.g:10642:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10643:3: ( RULE_ID )
             {
              before(grammarAccess.getConditionEdgeAccess().getTargetConditionNodeTypesCrossReference_3_0()); 
-            // InternalHenshin_text.g:10568:3: ( RULE_ID )
-            // InternalHenshin_text.g:10569:4: RULE_ID
+            // InternalHenshin_text.g:10644:3: ( RULE_ID )
+            // InternalHenshin_text.g:10645:4: RULE_ID
             {
              before(grammarAccess.getConditionEdgeAccess().getTargetConditionNodeTypesIDTerminalRuleCall_3_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32370,21 +32656,21 @@
 
 
     // $ANTLR start "rule__ConditionEdge__TypeAssignment_5"
-    // InternalHenshin_text.g:10580:1: rule__ConditionEdge__TypeAssignment_5 : ( ( ruleEString ) ) ;
+    // InternalHenshin_text.g:10656:1: rule__ConditionEdge__TypeAssignment_5 : ( ( ruleEString ) ) ;
     public final void rule__ConditionEdge__TypeAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10584:1: ( ( ( ruleEString ) ) )
-            // InternalHenshin_text.g:10585:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10660:1: ( ( ( ruleEString ) ) )
+            // InternalHenshin_text.g:10661:2: ( ( ruleEString ) )
             {
-            // InternalHenshin_text.g:10585:2: ( ( ruleEString ) )
-            // InternalHenshin_text.g:10586:3: ( ruleEString )
+            // InternalHenshin_text.g:10661:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10662:3: ( ruleEString )
             {
              before(grammarAccess.getConditionEdgeAccess().getTypeEReferenceCrossReference_5_0()); 
-            // InternalHenshin_text.g:10587:3: ( ruleEString )
-            // InternalHenshin_text.g:10588:4: ruleEString
+            // InternalHenshin_text.g:10663:3: ( ruleEString )
+            // InternalHenshin_text.g:10664:4: ruleEString
             {
              before(grammarAccess.getConditionEdgeAccess().getTypeEReferenceEStringParserRuleCall_5_0_1()); 
             pushFollow(FOLLOW_2);
@@ -32419,17 +32705,17 @@
 
 
     // $ANTLR start "rule__ConditionNode__NameAssignment_1"
-    // InternalHenshin_text.g:10599:1: rule__ConditionNode__NameAssignment_1 : ( RULE_ID ) ;
+    // InternalHenshin_text.g:10675:1: rule__ConditionNode__NameAssignment_1 : ( RULE_ID ) ;
     public final void rule__ConditionNode__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10603:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10604:2: ( RULE_ID )
+            // InternalHenshin_text.g:10679:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10680:2: ( RULE_ID )
             {
-            // InternalHenshin_text.g:10604:2: ( RULE_ID )
-            // InternalHenshin_text.g:10605:3: RULE_ID
+            // InternalHenshin_text.g:10680:2: ( RULE_ID )
+            // InternalHenshin_text.g:10681:3: RULE_ID
             {
              before(grammarAccess.getConditionNodeAccess().getNameIDTerminalRuleCall_1_0()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32456,21 +32742,21 @@
 
 
     // $ANTLR start "rule__ConditionNode__TypeAssignment_3"
-    // InternalHenshin_text.g:10614:1: rule__ConditionNode__TypeAssignment_3 : ( ( ruleEString ) ) ;
+    // InternalHenshin_text.g:10690:1: rule__ConditionNode__TypeAssignment_3 : ( ( ruleEString ) ) ;
     public final void rule__ConditionNode__TypeAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10618:1: ( ( ( ruleEString ) ) )
-            // InternalHenshin_text.g:10619:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10694:1: ( ( ( ruleEString ) ) )
+            // InternalHenshin_text.g:10695:2: ( ( ruleEString ) )
             {
-            // InternalHenshin_text.g:10619:2: ( ( ruleEString ) )
-            // InternalHenshin_text.g:10620:3: ( ruleEString )
+            // InternalHenshin_text.g:10695:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10696:3: ( ruleEString )
             {
              before(grammarAccess.getConditionNodeAccess().getTypeEClassCrossReference_3_0()); 
-            // InternalHenshin_text.g:10621:3: ( ruleEString )
-            // InternalHenshin_text.g:10622:4: ruleEString
+            // InternalHenshin_text.g:10697:3: ( ruleEString )
+            // InternalHenshin_text.g:10698:4: ruleEString
             {
              before(grammarAccess.getConditionNodeAccess().getTypeEClassEStringParserRuleCall_3_0_1()); 
             pushFollow(FOLLOW_2);
@@ -32505,17 +32791,17 @@
 
 
     // $ANTLR start "rule__ConditionNode__AttributeAssignment_4_1"
-    // InternalHenshin_text.g:10633:1: rule__ConditionNode__AttributeAssignment_4_1 : ( ruleMatch ) ;
+    // InternalHenshin_text.g:10709:1: rule__ConditionNode__AttributeAssignment_4_1 : ( ruleMatch ) ;
     public final void rule__ConditionNode__AttributeAssignment_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10637:1: ( ( ruleMatch ) )
-            // InternalHenshin_text.g:10638:2: ( ruleMatch )
+            // InternalHenshin_text.g:10713:1: ( ( ruleMatch ) )
+            // InternalHenshin_text.g:10714:2: ( ruleMatch )
             {
-            // InternalHenshin_text.g:10638:2: ( ruleMatch )
-            // InternalHenshin_text.g:10639:3: ruleMatch
+            // InternalHenshin_text.g:10714:2: ( ruleMatch )
+            // InternalHenshin_text.g:10715:3: ruleMatch
             {
              before(grammarAccess.getConditionNodeAccess().getAttributeMatchParserRuleCall_4_1_0()); 
             pushFollow(FOLLOW_2);
@@ -32546,21 +32832,21 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__NameAssignment_1"
-    // InternalHenshin_text.g:10648:1: rule__ConditionReuseNode__NameAssignment_1 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:10724:1: rule__ConditionReuseNode__NameAssignment_1 : ( ( RULE_ID ) ) ;
     public final void rule__ConditionReuseNode__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10652:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:10653:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10728:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:10729:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:10653:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10654:3: ( RULE_ID )
+            // InternalHenshin_text.g:10729:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10730:3: ( RULE_ID )
             {
              before(grammarAccess.getConditionReuseNodeAccess().getNameConditionNodeTypesCrossReference_1_0()); 
-            // InternalHenshin_text.g:10655:3: ( RULE_ID )
-            // InternalHenshin_text.g:10656:4: RULE_ID
+            // InternalHenshin_text.g:10731:3: ( RULE_ID )
+            // InternalHenshin_text.g:10732:4: RULE_ID
             {
              before(grammarAccess.getConditionReuseNodeAccess().getNameConditionNodeTypesIDTerminalRuleCall_1_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32591,17 +32877,17 @@
 
 
     // $ANTLR start "rule__ConditionReuseNode__AttributeAssignment_2_1"
-    // InternalHenshin_text.g:10667:1: rule__ConditionReuseNode__AttributeAssignment_2_1 : ( ruleMatch ) ;
+    // InternalHenshin_text.g:10743:1: rule__ConditionReuseNode__AttributeAssignment_2_1 : ( ruleMatch ) ;
     public final void rule__ConditionReuseNode__AttributeAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10671:1: ( ( ruleMatch ) )
-            // InternalHenshin_text.g:10672:2: ( ruleMatch )
+            // InternalHenshin_text.g:10747:1: ( ( ruleMatch ) )
+            // InternalHenshin_text.g:10748:2: ( ruleMatch )
             {
-            // InternalHenshin_text.g:10672:2: ( ruleMatch )
-            // InternalHenshin_text.g:10673:3: ruleMatch
+            // InternalHenshin_text.g:10748:2: ( ruleMatch )
+            // InternalHenshin_text.g:10749:3: ruleMatch
             {
              before(grammarAccess.getConditionReuseNodeAccess().getAttributeMatchParserRuleCall_2_1_0()); 
             pushFollow(FOLLOW_2);
@@ -32632,21 +32918,21 @@
 
 
     // $ANTLR start "rule__Match__NameAssignment_0"
-    // InternalHenshin_text.g:10682:1: rule__Match__NameAssignment_0 : ( ( ruleEString ) ) ;
+    // InternalHenshin_text.g:10758:1: rule__Match__NameAssignment_0 : ( ( ruleEString ) ) ;
     public final void rule__Match__NameAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10686:1: ( ( ( ruleEString ) ) )
-            // InternalHenshin_text.g:10687:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10762:1: ( ( ( ruleEString ) ) )
+            // InternalHenshin_text.g:10763:2: ( ( ruleEString ) )
             {
-            // InternalHenshin_text.g:10687:2: ( ( ruleEString ) )
-            // InternalHenshin_text.g:10688:3: ( ruleEString )
+            // InternalHenshin_text.g:10763:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:10764:3: ( ruleEString )
             {
              before(grammarAccess.getMatchAccess().getNameEAttributeCrossReference_0_0()); 
-            // InternalHenshin_text.g:10689:3: ( ruleEString )
-            // InternalHenshin_text.g:10690:4: ruleEString
+            // InternalHenshin_text.g:10765:3: ( ruleEString )
+            // InternalHenshin_text.g:10766:4: ruleEString
             {
              before(grammarAccess.getMatchAccess().getNameEAttributeEStringParserRuleCall_0_0_1()); 
             pushFollow(FOLLOW_2);
@@ -32681,17 +32967,17 @@
 
 
     // $ANTLR start "rule__Match__ValueAssignment_2"
-    // InternalHenshin_text.g:10701:1: rule__Match__ValueAssignment_2 : ( ruleExpression ) ;
+    // InternalHenshin_text.g:10777:1: rule__Match__ValueAssignment_2 : ( ruleExpression ) ;
     public final void rule__Match__ValueAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10705:1: ( ( ruleExpression ) )
-            // InternalHenshin_text.g:10706:2: ( ruleExpression )
+            // InternalHenshin_text.g:10781:1: ( ( ruleExpression ) )
+            // InternalHenshin_text.g:10782:2: ( ruleExpression )
             {
-            // InternalHenshin_text.g:10706:2: ( ruleExpression )
-            // InternalHenshin_text.g:10707:3: ruleExpression
+            // InternalHenshin_text.g:10782:2: ( ruleExpression )
+            // InternalHenshin_text.g:10783:3: ruleExpression
             {
              before(grammarAccess.getMatchAccess().getValueExpressionParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -32722,21 +33008,21 @@
 
 
     // $ANTLR start "rule__UnitElement__ElementCallAssignment_0_1"
-    // InternalHenshin_text.g:10716:1: rule__UnitElement__ElementCallAssignment_0_1 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:10792:1: rule__UnitElement__ElementCallAssignment_0_1 : ( ( RULE_ID ) ) ;
     public final void rule__UnitElement__ElementCallAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10720:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:10721:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10796:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:10797:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:10721:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10722:3: ( RULE_ID )
+            // InternalHenshin_text.g:10797:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10798:3: ( RULE_ID )
             {
              before(grammarAccess.getUnitElementAccess().getElementCallModelElementCrossReference_0_1_0()); 
-            // InternalHenshin_text.g:10723:3: ( RULE_ID )
-            // InternalHenshin_text.g:10724:4: RULE_ID
+            // InternalHenshin_text.g:10799:3: ( RULE_ID )
+            // InternalHenshin_text.g:10800:4: RULE_ID
             {
              before(grammarAccess.getUnitElementAccess().getElementCallModelElementIDTerminalRuleCall_0_1_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32767,21 +33053,21 @@
 
 
     // $ANTLR start "rule__UnitElement__ParametersAssignment_0_3_0"
-    // InternalHenshin_text.g:10735:1: rule__UnitElement__ParametersAssignment_0_3_0 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:10811:1: rule__UnitElement__ParametersAssignment_0_3_0 : ( ( RULE_ID ) ) ;
     public final void rule__UnitElement__ParametersAssignment_0_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10739:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:10740:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10815:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:10816:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:10740:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10741:3: ( RULE_ID )
+            // InternalHenshin_text.g:10816:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10817:3: ( RULE_ID )
             {
              before(grammarAccess.getUnitElementAccess().getParametersParameterCrossReference_0_3_0_0()); 
-            // InternalHenshin_text.g:10742:3: ( RULE_ID )
-            // InternalHenshin_text.g:10743:4: RULE_ID
+            // InternalHenshin_text.g:10818:3: ( RULE_ID )
+            // InternalHenshin_text.g:10819:4: RULE_ID
             {
              before(grammarAccess.getUnitElementAccess().getParametersParameterIDTerminalRuleCall_0_3_0_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32812,21 +33098,21 @@
 
 
     // $ANTLR start "rule__UnitElement__ParametersAssignment_0_3_1_1"
-    // InternalHenshin_text.g:10754:1: rule__UnitElement__ParametersAssignment_0_3_1_1 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:10830:1: rule__UnitElement__ParametersAssignment_0_3_1_1 : ( ( RULE_ID ) ) ;
     public final void rule__UnitElement__ParametersAssignment_0_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10758:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:10759:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10834:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:10835:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:10759:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10760:3: ( RULE_ID )
+            // InternalHenshin_text.g:10835:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:10836:3: ( RULE_ID )
             {
              before(grammarAccess.getUnitElementAccess().getParametersParameterCrossReference_0_3_1_1_0()); 
-            // InternalHenshin_text.g:10761:3: ( RULE_ID )
-            // InternalHenshin_text.g:10762:4: RULE_ID
+            // InternalHenshin_text.g:10837:3: ( RULE_ID )
+            // InternalHenshin_text.g:10838:4: RULE_ID
             {
              before(grammarAccess.getUnitElementAccess().getParametersParameterIDTerminalRuleCall_0_3_1_1_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -32857,17 +33143,17 @@
 
 
     // $ANTLR start "rule__UnitElement__SubSequenceAssignment_1_1"
-    // InternalHenshin_text.g:10773:1: rule__UnitElement__SubSequenceAssignment_1_1 : ( ruleUnitElement ) ;
+    // InternalHenshin_text.g:10849:1: rule__UnitElement__SubSequenceAssignment_1_1 : ( ruleUnitElement ) ;
     public final void rule__UnitElement__SubSequenceAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10777:1: ( ( ruleUnitElement ) )
-            // InternalHenshin_text.g:10778:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10853:1: ( ( ruleUnitElement ) )
+            // InternalHenshin_text.g:10854:2: ( ruleUnitElement )
             {
-            // InternalHenshin_text.g:10778:2: ( ruleUnitElement )
-            // InternalHenshin_text.g:10779:3: ruleUnitElement
+            // InternalHenshin_text.g:10854:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10855:3: ruleUnitElement
             {
              before(grammarAccess.getUnitElementAccess().getSubSequenceUnitElementParserRuleCall_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -32898,17 +33184,17 @@
 
 
     // $ANTLR start "rule__Strict__StrictAssignment_1"
-    // InternalHenshin_text.g:10788:1: rule__Strict__StrictAssignment_1 : ( ruleEBoolean ) ;
+    // InternalHenshin_text.g:10864:1: rule__Strict__StrictAssignment_1 : ( ruleEBoolean ) ;
     public final void rule__Strict__StrictAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10792:1: ( ( ruleEBoolean ) )
-            // InternalHenshin_text.g:10793:2: ( ruleEBoolean )
+            // InternalHenshin_text.g:10868:1: ( ( ruleEBoolean ) )
+            // InternalHenshin_text.g:10869:2: ( ruleEBoolean )
             {
-            // InternalHenshin_text.g:10793:2: ( ruleEBoolean )
-            // InternalHenshin_text.g:10794:3: ruleEBoolean
+            // InternalHenshin_text.g:10869:2: ( ruleEBoolean )
+            // InternalHenshin_text.g:10870:3: ruleEBoolean
             {
              before(grammarAccess.getStrictAccess().getStrictEBooleanParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -32939,17 +33225,17 @@
 
 
     // $ANTLR start "rule__Rollback__RollbackAssignment_1"
-    // InternalHenshin_text.g:10803:1: rule__Rollback__RollbackAssignment_1 : ( ruleEBoolean ) ;
+    // InternalHenshin_text.g:10879:1: rule__Rollback__RollbackAssignment_1 : ( ruleEBoolean ) ;
     public final void rule__Rollback__RollbackAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10807:1: ( ( ruleEBoolean ) )
-            // InternalHenshin_text.g:10808:2: ( ruleEBoolean )
+            // InternalHenshin_text.g:10883:1: ( ( ruleEBoolean ) )
+            // InternalHenshin_text.g:10884:2: ( ruleEBoolean )
             {
-            // InternalHenshin_text.g:10808:2: ( ruleEBoolean )
-            // InternalHenshin_text.g:10809:3: ruleEBoolean
+            // InternalHenshin_text.g:10884:2: ( ruleEBoolean )
+            // InternalHenshin_text.g:10885:3: ruleEBoolean
             {
              before(grammarAccess.getRollbackAccess().getRollbackEBooleanParserRuleCall_1_0()); 
             pushFollow(FOLLOW_2);
@@ -32980,17 +33266,17 @@
 
 
     // $ANTLR start "rule__List__SubElementsAssignment"
-    // InternalHenshin_text.g:10818:1: rule__List__SubElementsAssignment : ( ruleUnitElement ) ;
+    // InternalHenshin_text.g:10894:1: rule__List__SubElementsAssignment : ( ruleUnitElement ) ;
     public final void rule__List__SubElementsAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10822:1: ( ( ruleUnitElement ) )
-            // InternalHenshin_text.g:10823:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10898:1: ( ( ruleUnitElement ) )
+            // InternalHenshin_text.g:10899:2: ( ruleUnitElement )
             {
-            // InternalHenshin_text.g:10823:2: ( ruleUnitElement )
-            // InternalHenshin_text.g:10824:3: ruleUnitElement
+            // InternalHenshin_text.g:10899:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10900:3: ruleUnitElement
             {
              before(grammarAccess.getListAccess().getSubElementsUnitElementParserRuleCall_0()); 
             pushFollow(FOLLOW_2);
@@ -33021,17 +33307,17 @@
 
 
     // $ANTLR start "rule__IndependentUnit__ListOfListsAssignment_2"
-    // InternalHenshin_text.g:10833:1: rule__IndependentUnit__ListOfListsAssignment_2 : ( ruleList ) ;
+    // InternalHenshin_text.g:10909:1: rule__IndependentUnit__ListOfListsAssignment_2 : ( ruleList ) ;
     public final void rule__IndependentUnit__ListOfListsAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10837:1: ( ( ruleList ) )
-            // InternalHenshin_text.g:10838:2: ( ruleList )
+            // InternalHenshin_text.g:10913:1: ( ( ruleList ) )
+            // InternalHenshin_text.g:10914:2: ( ruleList )
             {
-            // InternalHenshin_text.g:10838:2: ( ruleList )
-            // InternalHenshin_text.g:10839:3: ruleList
+            // InternalHenshin_text.g:10914:2: ( ruleList )
+            // InternalHenshin_text.g:10915:3: ruleList
             {
              before(grammarAccess.getIndependentUnitAccess().getListOfListsListParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33062,17 +33348,17 @@
 
 
     // $ANTLR start "rule__IndependentUnit__ListOfListsAssignment_3_1"
-    // InternalHenshin_text.g:10848:1: rule__IndependentUnit__ListOfListsAssignment_3_1 : ( ruleList ) ;
+    // InternalHenshin_text.g:10924:1: rule__IndependentUnit__ListOfListsAssignment_3_1 : ( ruleList ) ;
     public final void rule__IndependentUnit__ListOfListsAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10852:1: ( ( ruleList ) )
-            // InternalHenshin_text.g:10853:2: ( ruleList )
+            // InternalHenshin_text.g:10928:1: ( ( ruleList ) )
+            // InternalHenshin_text.g:10929:2: ( ruleList )
             {
-            // InternalHenshin_text.g:10853:2: ( ruleList )
-            // InternalHenshin_text.g:10854:3: ruleList
+            // InternalHenshin_text.g:10929:2: ( ruleList )
+            // InternalHenshin_text.g:10930:3: ruleList
             {
              before(grammarAccess.getIndependentUnitAccess().getListOfListsListParserRuleCall_3_1_0()); 
             pushFollow(FOLLOW_2);
@@ -33103,17 +33389,17 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__IfAssignment_2"
-    // InternalHenshin_text.g:10863:1: rule__ConditionalUnit__IfAssignment_2 : ( ruleUnitElement ) ;
+    // InternalHenshin_text.g:10939:1: rule__ConditionalUnit__IfAssignment_2 : ( ruleUnitElement ) ;
     public final void rule__ConditionalUnit__IfAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10867:1: ( ( ruleUnitElement ) )
-            // InternalHenshin_text.g:10868:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10943:1: ( ( ruleUnitElement ) )
+            // InternalHenshin_text.g:10944:2: ( ruleUnitElement )
             {
-            // InternalHenshin_text.g:10868:2: ( ruleUnitElement )
-            // InternalHenshin_text.g:10869:3: ruleUnitElement
+            // InternalHenshin_text.g:10944:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10945:3: ruleUnitElement
             {
              before(grammarAccess.getConditionalUnitAccess().getIfUnitElementParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33144,17 +33430,17 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__ThenAssignment_6"
-    // InternalHenshin_text.g:10878:1: rule__ConditionalUnit__ThenAssignment_6 : ( ruleUnitElement ) ;
+    // InternalHenshin_text.g:10954:1: rule__ConditionalUnit__ThenAssignment_6 : ( ruleUnitElement ) ;
     public final void rule__ConditionalUnit__ThenAssignment_6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10882:1: ( ( ruleUnitElement ) )
-            // InternalHenshin_text.g:10883:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10958:1: ( ( ruleUnitElement ) )
+            // InternalHenshin_text.g:10959:2: ( ruleUnitElement )
             {
-            // InternalHenshin_text.g:10883:2: ( ruleUnitElement )
-            // InternalHenshin_text.g:10884:3: ruleUnitElement
+            // InternalHenshin_text.g:10959:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10960:3: ruleUnitElement
             {
              before(grammarAccess.getConditionalUnitAccess().getThenUnitElementParserRuleCall_6_0()); 
             pushFollow(FOLLOW_2);
@@ -33185,17 +33471,17 @@
 
 
     // $ANTLR start "rule__ConditionalUnit__ElseAssignment_8_2"
-    // InternalHenshin_text.g:10893:1: rule__ConditionalUnit__ElseAssignment_8_2 : ( ruleUnitElement ) ;
+    // InternalHenshin_text.g:10969:1: rule__ConditionalUnit__ElseAssignment_8_2 : ( ruleUnitElement ) ;
     public final void rule__ConditionalUnit__ElseAssignment_8_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10897:1: ( ( ruleUnitElement ) )
-            // InternalHenshin_text.g:10898:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10973:1: ( ( ruleUnitElement ) )
+            // InternalHenshin_text.g:10974:2: ( ruleUnitElement )
             {
-            // InternalHenshin_text.g:10898:2: ( ruleUnitElement )
-            // InternalHenshin_text.g:10899:3: ruleUnitElement
+            // InternalHenshin_text.g:10974:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:10975:3: ruleUnitElement
             {
              before(grammarAccess.getConditionalUnitAccess().getElseUnitElementParserRuleCall_8_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33226,17 +33512,17 @@
 
 
     // $ANTLR start "rule__PriorityUnit__ListOfListsAssignment_2"
-    // InternalHenshin_text.g:10908:1: rule__PriorityUnit__ListOfListsAssignment_2 : ( ruleList ) ;
+    // InternalHenshin_text.g:10984:1: rule__PriorityUnit__ListOfListsAssignment_2 : ( ruleList ) ;
     public final void rule__PriorityUnit__ListOfListsAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10912:1: ( ( ruleList ) )
-            // InternalHenshin_text.g:10913:2: ( ruleList )
+            // InternalHenshin_text.g:10988:1: ( ( ruleList ) )
+            // InternalHenshin_text.g:10989:2: ( ruleList )
             {
-            // InternalHenshin_text.g:10913:2: ( ruleList )
-            // InternalHenshin_text.g:10914:3: ruleList
+            // InternalHenshin_text.g:10989:2: ( ruleList )
+            // InternalHenshin_text.g:10990:3: ruleList
             {
              before(grammarAccess.getPriorityUnitAccess().getListOfListsListParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33267,17 +33553,17 @@
 
 
     // $ANTLR start "rule__PriorityUnit__ListOfListsAssignment_3_1"
-    // InternalHenshin_text.g:10923:1: rule__PriorityUnit__ListOfListsAssignment_3_1 : ( ruleList ) ;
+    // InternalHenshin_text.g:10999:1: rule__PriorityUnit__ListOfListsAssignment_3_1 : ( ruleList ) ;
     public final void rule__PriorityUnit__ListOfListsAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10927:1: ( ( ruleList ) )
-            // InternalHenshin_text.g:10928:2: ( ruleList )
+            // InternalHenshin_text.g:11003:1: ( ( ruleList ) )
+            // InternalHenshin_text.g:11004:2: ( ruleList )
             {
-            // InternalHenshin_text.g:10928:2: ( ruleList )
-            // InternalHenshin_text.g:10929:3: ruleList
+            // InternalHenshin_text.g:11004:2: ( ruleList )
+            // InternalHenshin_text.g:11005:3: ruleList
             {
              before(grammarAccess.getPriorityUnitAccess().getListOfListsListParserRuleCall_3_1_0()); 
             pushFollow(FOLLOW_2);
@@ -33308,17 +33594,17 @@
 
 
     // $ANTLR start "rule__IteratedUnit__IterationsAssignment_3"
-    // InternalHenshin_text.g:10938:1: rule__IteratedUnit__IterationsAssignment_3 : ( ruleExpression ) ;
+    // InternalHenshin_text.g:11014:1: rule__IteratedUnit__IterationsAssignment_3 : ( ruleExpression ) ;
     public final void rule__IteratedUnit__IterationsAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10942:1: ( ( ruleExpression ) )
-            // InternalHenshin_text.g:10943:2: ( ruleExpression )
+            // InternalHenshin_text.g:11018:1: ( ( ruleExpression ) )
+            // InternalHenshin_text.g:11019:2: ( ruleExpression )
             {
-            // InternalHenshin_text.g:10943:2: ( ruleExpression )
-            // InternalHenshin_text.g:10944:3: ruleExpression
+            // InternalHenshin_text.g:11019:2: ( ruleExpression )
+            // InternalHenshin_text.g:11020:3: ruleExpression
             {
              before(grammarAccess.getIteratedUnitAccess().getIterationsExpressionParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
@@ -33349,17 +33635,17 @@
 
 
     // $ANTLR start "rule__IteratedUnit__SubElementAssignment_6"
-    // InternalHenshin_text.g:10953:1: rule__IteratedUnit__SubElementAssignment_6 : ( ruleUnitElement ) ;
+    // InternalHenshin_text.g:11029:1: rule__IteratedUnit__SubElementAssignment_6 : ( ruleUnitElement ) ;
     public final void rule__IteratedUnit__SubElementAssignment_6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10957:1: ( ( ruleUnitElement ) )
-            // InternalHenshin_text.g:10958:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:11033:1: ( ( ruleUnitElement ) )
+            // InternalHenshin_text.g:11034:2: ( ruleUnitElement )
             {
-            // InternalHenshin_text.g:10958:2: ( ruleUnitElement )
-            // InternalHenshin_text.g:10959:3: ruleUnitElement
+            // InternalHenshin_text.g:11034:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:11035:3: ruleUnitElement
             {
              before(grammarAccess.getIteratedUnitAccess().getSubElementUnitElementParserRuleCall_6_0()); 
             pushFollow(FOLLOW_2);
@@ -33390,17 +33676,17 @@
 
 
     // $ANTLR start "rule__LoopUnit__SubElementAssignment_2"
-    // InternalHenshin_text.g:10968:1: rule__LoopUnit__SubElementAssignment_2 : ( ruleUnitElement ) ;
+    // InternalHenshin_text.g:11044:1: rule__LoopUnit__SubElementAssignment_2 : ( ruleUnitElement ) ;
     public final void rule__LoopUnit__SubElementAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10972:1: ( ( ruleUnitElement ) )
-            // InternalHenshin_text.g:10973:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:11048:1: ( ( ruleUnitElement ) )
+            // InternalHenshin_text.g:11049:2: ( ruleUnitElement )
             {
-            // InternalHenshin_text.g:10973:2: ( ruleUnitElement )
-            // InternalHenshin_text.g:10974:3: ruleUnitElement
+            // InternalHenshin_text.g:11049:2: ( ruleUnitElement )
+            // InternalHenshin_text.g:11050:3: ruleUnitElement
             {
              before(grammarAccess.getLoopUnitAccess().getSubElementUnitElementParserRuleCall_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33430,22 +33716,26 @@
     // $ANTLR end "rule__LoopUnit__SubElementAssignment_2"
 
 
-    // $ANTLR start "rule__Parameter__NameAssignment_0"
-    // InternalHenshin_text.g:10983:1: rule__Parameter__NameAssignment_0 : ( RULE_ID ) ;
-    public final void rule__Parameter__NameAssignment_0() throws RecognitionException {
+    // $ANTLR start "rule__Parameter__KindAssignment_0"
+    // InternalHenshin_text.g:11059:1: rule__Parameter__KindAssignment_0 : ( ruleParameterKindRule ) ;
+    public final void rule__Parameter__KindAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:10987:1: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:10988:2: ( RULE_ID )
+            // InternalHenshin_text.g:11063:1: ( ( ruleParameterKindRule ) )
+            // InternalHenshin_text.g:11064:2: ( ruleParameterKindRule )
             {
-            // InternalHenshin_text.g:10988:2: ( RULE_ID )
-            // InternalHenshin_text.g:10989:3: RULE_ID
+            // InternalHenshin_text.g:11064:2: ( ruleParameterKindRule )
+            // InternalHenshin_text.g:11065:3: ruleParameterKindRule
             {
-             before(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0()); 
-            match(input,RULE_ID,FOLLOW_2); 
-             after(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0()); 
+             before(grammarAccess.getParameterAccess().getKindParameterKindRuleEnumRuleCall_0_0()); 
+            pushFollow(FOLLOW_2);
+            ruleParameterKindRule();
+
+            state._fsp--;
+
+             after(grammarAccess.getParameterAccess().getKindParameterKindRuleEnumRuleCall_0_0()); 
 
             }
 
@@ -33464,29 +33754,66 @@
         }
         return ;
     }
-    // $ANTLR end "rule__Parameter__NameAssignment_0"
+    // $ANTLR end "rule__Parameter__KindAssignment_0"
 
 
-    // $ANTLR start "rule__Parameter__TypeAssignment_2"
-    // InternalHenshin_text.g:10998:1: rule__Parameter__TypeAssignment_2 : ( ruleParameterType ) ;
-    public final void rule__Parameter__TypeAssignment_2() throws RecognitionException {
+    // $ANTLR start "rule__Parameter__NameAssignment_1"
+    // InternalHenshin_text.g:11074:1: rule__Parameter__NameAssignment_1 : ( RULE_ID ) ;
+    public final void rule__Parameter__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11002:1: ( ( ruleParameterType ) )
-            // InternalHenshin_text.g:11003:2: ( ruleParameterType )
+            // InternalHenshin_text.g:11078:1: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:11079:2: ( RULE_ID )
             {
-            // InternalHenshin_text.g:11003:2: ( ruleParameterType )
-            // InternalHenshin_text.g:11004:3: ruleParameterType
+            // InternalHenshin_text.g:11079:2: ( RULE_ID )
+            // InternalHenshin_text.g:11080:3: RULE_ID
             {
-             before(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_2_0()); 
+             before(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FOLLOW_2); 
+             after(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Parameter__NameAssignment_1"
+
+
+    // $ANTLR start "rule__Parameter__TypeAssignment_3"
+    // InternalHenshin_text.g:11089:1: rule__Parameter__TypeAssignment_3 : ( ruleParameterType ) ;
+    public final void rule__Parameter__TypeAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalHenshin_text.g:11093:1: ( ( ruleParameterType ) )
+            // InternalHenshin_text.g:11094:2: ( ruleParameterType )
+            {
+            // InternalHenshin_text.g:11094:2: ( ruleParameterType )
+            // InternalHenshin_text.g:11095:3: ruleParameterType
+            {
+             before(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_3_0()); 
             pushFollow(FOLLOW_2);
             ruleParameterType();
 
             state._fsp--;
 
-             after(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_2_0()); 
+             after(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_3_0()); 
 
             }
 
@@ -33505,21 +33832,21 @@
         }
         return ;
     }
-    // $ANTLR end "rule__Parameter__TypeAssignment_2"
+    // $ANTLR end "rule__Parameter__TypeAssignment_3"
 
 
     // $ANTLR start "rule__ParameterType__EnumTypeAssignment_0"
-    // InternalHenshin_text.g:11013:1: rule__ParameterType__EnumTypeAssignment_0 : ( ruleType ) ;
+    // InternalHenshin_text.g:11104:1: rule__ParameterType__EnumTypeAssignment_0 : ( ruleType ) ;
     public final void rule__ParameterType__EnumTypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11017:1: ( ( ruleType ) )
-            // InternalHenshin_text.g:11018:2: ( ruleType )
+            // InternalHenshin_text.g:11108:1: ( ( ruleType ) )
+            // InternalHenshin_text.g:11109:2: ( ruleType )
             {
-            // InternalHenshin_text.g:11018:2: ( ruleType )
-            // InternalHenshin_text.g:11019:3: ruleType
+            // InternalHenshin_text.g:11109:2: ( ruleType )
+            // InternalHenshin_text.g:11110:3: ruleType
             {
              before(grammarAccess.getParameterTypeAccess().getEnumTypeTypeEnumRuleCall_0_0()); 
             pushFollow(FOLLOW_2);
@@ -33550,21 +33877,21 @@
 
 
     // $ANTLR start "rule__ParameterType__TypeAssignment_1"
-    // InternalHenshin_text.g:11028:1: rule__ParameterType__TypeAssignment_1 : ( ( ruleEString ) ) ;
+    // InternalHenshin_text.g:11119:1: rule__ParameterType__TypeAssignment_1 : ( ( ruleEString ) ) ;
     public final void rule__ParameterType__TypeAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11032:1: ( ( ( ruleEString ) ) )
-            // InternalHenshin_text.g:11033:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:11123:1: ( ( ( ruleEString ) ) )
+            // InternalHenshin_text.g:11124:2: ( ( ruleEString ) )
             {
-            // InternalHenshin_text.g:11033:2: ( ( ruleEString ) )
-            // InternalHenshin_text.g:11034:3: ( ruleEString )
+            // InternalHenshin_text.g:11124:2: ( ( ruleEString ) )
+            // InternalHenshin_text.g:11125:3: ( ruleEString )
             {
              before(grammarAccess.getParameterTypeAccess().getTypeEClassCrossReference_1_0()); 
-            // InternalHenshin_text.g:11035:3: ( ruleEString )
-            // InternalHenshin_text.g:11036:4: ruleEString
+            // InternalHenshin_text.g:11126:3: ( ruleEString )
+            // InternalHenshin_text.g:11127:4: ruleEString
             {
              before(grammarAccess.getParameterTypeAccess().getTypeEClassEStringParserRuleCall_1_0_1()); 
             pushFollow(FOLLOW_2);
@@ -33599,17 +33926,17 @@
 
 
     // $ANTLR start "rule__OrExpression__RightAssignment_1_2"
-    // InternalHenshin_text.g:11047:1: rule__OrExpression__RightAssignment_1_2 : ( ruleAndExpression ) ;
+    // InternalHenshin_text.g:11138:1: rule__OrExpression__RightAssignment_1_2 : ( ruleAndExpression ) ;
     public final void rule__OrExpression__RightAssignment_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11051:1: ( ( ruleAndExpression ) )
-            // InternalHenshin_text.g:11052:2: ( ruleAndExpression )
+            // InternalHenshin_text.g:11142:1: ( ( ruleAndExpression ) )
+            // InternalHenshin_text.g:11143:2: ( ruleAndExpression )
             {
-            // InternalHenshin_text.g:11052:2: ( ruleAndExpression )
-            // InternalHenshin_text.g:11053:3: ruleAndExpression
+            // InternalHenshin_text.g:11143:2: ( ruleAndExpression )
+            // InternalHenshin_text.g:11144:3: ruleAndExpression
             {
              before(grammarAccess.getOrExpressionAccess().getRightAndExpressionParserRuleCall_1_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33640,17 +33967,17 @@
 
 
     // $ANTLR start "rule__AndExpression__RightAssignment_1_2"
-    // InternalHenshin_text.g:11062:1: rule__AndExpression__RightAssignment_1_2 : ( ruleEqualityExpression ) ;
+    // InternalHenshin_text.g:11153:1: rule__AndExpression__RightAssignment_1_2 : ( ruleEqualityExpression ) ;
     public final void rule__AndExpression__RightAssignment_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11066:1: ( ( ruleEqualityExpression ) )
-            // InternalHenshin_text.g:11067:2: ( ruleEqualityExpression )
+            // InternalHenshin_text.g:11157:1: ( ( ruleEqualityExpression ) )
+            // InternalHenshin_text.g:11158:2: ( ruleEqualityExpression )
             {
-            // InternalHenshin_text.g:11067:2: ( ruleEqualityExpression )
-            // InternalHenshin_text.g:11068:3: ruleEqualityExpression
+            // InternalHenshin_text.g:11158:2: ( ruleEqualityExpression )
+            // InternalHenshin_text.g:11159:3: ruleEqualityExpression
             {
              before(grammarAccess.getAndExpressionAccess().getRightEqualityExpressionParserRuleCall_1_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33681,21 +34008,21 @@
 
 
     // $ANTLR start "rule__EqualityExpression__OpAssignment_1_1"
-    // InternalHenshin_text.g:11077:1: rule__EqualityExpression__OpAssignment_1_1 : ( ( rule__EqualityExpression__OpAlternatives_1_1_0 ) ) ;
+    // InternalHenshin_text.g:11168:1: rule__EqualityExpression__OpAssignment_1_1 : ( ( rule__EqualityExpression__OpAlternatives_1_1_0 ) ) ;
     public final void rule__EqualityExpression__OpAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11081:1: ( ( ( rule__EqualityExpression__OpAlternatives_1_1_0 ) ) )
-            // InternalHenshin_text.g:11082:2: ( ( rule__EqualityExpression__OpAlternatives_1_1_0 ) )
+            // InternalHenshin_text.g:11172:1: ( ( ( rule__EqualityExpression__OpAlternatives_1_1_0 ) ) )
+            // InternalHenshin_text.g:11173:2: ( ( rule__EqualityExpression__OpAlternatives_1_1_0 ) )
             {
-            // InternalHenshin_text.g:11082:2: ( ( rule__EqualityExpression__OpAlternatives_1_1_0 ) )
-            // InternalHenshin_text.g:11083:3: ( rule__EqualityExpression__OpAlternatives_1_1_0 )
+            // InternalHenshin_text.g:11173:2: ( ( rule__EqualityExpression__OpAlternatives_1_1_0 ) )
+            // InternalHenshin_text.g:11174:3: ( rule__EqualityExpression__OpAlternatives_1_1_0 )
             {
              before(grammarAccess.getEqualityExpressionAccess().getOpAlternatives_1_1_0()); 
-            // InternalHenshin_text.g:11084:3: ( rule__EqualityExpression__OpAlternatives_1_1_0 )
-            // InternalHenshin_text.g:11084:4: rule__EqualityExpression__OpAlternatives_1_1_0
+            // InternalHenshin_text.g:11175:3: ( rule__EqualityExpression__OpAlternatives_1_1_0 )
+            // InternalHenshin_text.g:11175:4: rule__EqualityExpression__OpAlternatives_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__EqualityExpression__OpAlternatives_1_1_0();
@@ -33728,17 +34055,17 @@
 
 
     // $ANTLR start "rule__EqualityExpression__RightAssignment_1_2"
-    // InternalHenshin_text.g:11092:1: rule__EqualityExpression__RightAssignment_1_2 : ( ruleComparisonExpression ) ;
+    // InternalHenshin_text.g:11183:1: rule__EqualityExpression__RightAssignment_1_2 : ( ruleComparisonExpression ) ;
     public final void rule__EqualityExpression__RightAssignment_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11096:1: ( ( ruleComparisonExpression ) )
-            // InternalHenshin_text.g:11097:2: ( ruleComparisonExpression )
+            // InternalHenshin_text.g:11187:1: ( ( ruleComparisonExpression ) )
+            // InternalHenshin_text.g:11188:2: ( ruleComparisonExpression )
             {
-            // InternalHenshin_text.g:11097:2: ( ruleComparisonExpression )
-            // InternalHenshin_text.g:11098:3: ruleComparisonExpression
+            // InternalHenshin_text.g:11188:2: ( ruleComparisonExpression )
+            // InternalHenshin_text.g:11189:3: ruleComparisonExpression
             {
              before(grammarAccess.getEqualityExpressionAccess().getRightComparisonExpressionParserRuleCall_1_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33769,21 +34096,21 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__OpAssignment_1_1"
-    // InternalHenshin_text.g:11107:1: rule__ComparisonExpression__OpAssignment_1_1 : ( ( rule__ComparisonExpression__OpAlternatives_1_1_0 ) ) ;
+    // InternalHenshin_text.g:11198:1: rule__ComparisonExpression__OpAssignment_1_1 : ( ( rule__ComparisonExpression__OpAlternatives_1_1_0 ) ) ;
     public final void rule__ComparisonExpression__OpAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11111:1: ( ( ( rule__ComparisonExpression__OpAlternatives_1_1_0 ) ) )
-            // InternalHenshin_text.g:11112:2: ( ( rule__ComparisonExpression__OpAlternatives_1_1_0 ) )
+            // InternalHenshin_text.g:11202:1: ( ( ( rule__ComparisonExpression__OpAlternatives_1_1_0 ) ) )
+            // InternalHenshin_text.g:11203:2: ( ( rule__ComparisonExpression__OpAlternatives_1_1_0 ) )
             {
-            // InternalHenshin_text.g:11112:2: ( ( rule__ComparisonExpression__OpAlternatives_1_1_0 ) )
-            // InternalHenshin_text.g:11113:3: ( rule__ComparisonExpression__OpAlternatives_1_1_0 )
+            // InternalHenshin_text.g:11203:2: ( ( rule__ComparisonExpression__OpAlternatives_1_1_0 ) )
+            // InternalHenshin_text.g:11204:3: ( rule__ComparisonExpression__OpAlternatives_1_1_0 )
             {
              before(grammarAccess.getComparisonExpressionAccess().getOpAlternatives_1_1_0()); 
-            // InternalHenshin_text.g:11114:3: ( rule__ComparisonExpression__OpAlternatives_1_1_0 )
-            // InternalHenshin_text.g:11114:4: rule__ComparisonExpression__OpAlternatives_1_1_0
+            // InternalHenshin_text.g:11205:3: ( rule__ComparisonExpression__OpAlternatives_1_1_0 )
+            // InternalHenshin_text.g:11205:4: rule__ComparisonExpression__OpAlternatives_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__ComparisonExpression__OpAlternatives_1_1_0();
@@ -33816,17 +34143,17 @@
 
 
     // $ANTLR start "rule__ComparisonExpression__RightAssignment_1_2"
-    // InternalHenshin_text.g:11122:1: rule__ComparisonExpression__RightAssignment_1_2 : ( rulePlusOrMinusExpression ) ;
+    // InternalHenshin_text.g:11213:1: rule__ComparisonExpression__RightAssignment_1_2 : ( rulePlusOrMinusExpression ) ;
     public final void rule__ComparisonExpression__RightAssignment_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11126:1: ( ( rulePlusOrMinusExpression ) )
-            // InternalHenshin_text.g:11127:2: ( rulePlusOrMinusExpression )
+            // InternalHenshin_text.g:11217:1: ( ( rulePlusOrMinusExpression ) )
+            // InternalHenshin_text.g:11218:2: ( rulePlusOrMinusExpression )
             {
-            // InternalHenshin_text.g:11127:2: ( rulePlusOrMinusExpression )
-            // InternalHenshin_text.g:11128:3: rulePlusOrMinusExpression
+            // InternalHenshin_text.g:11218:2: ( rulePlusOrMinusExpression )
+            // InternalHenshin_text.g:11219:3: rulePlusOrMinusExpression
             {
              before(grammarAccess.getComparisonExpressionAccess().getRightPlusOrMinusExpressionParserRuleCall_1_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33857,17 +34184,17 @@
 
 
     // $ANTLR start "rule__PlusOrMinusExpression__RightAssignment_1_1"
-    // InternalHenshin_text.g:11137:1: rule__PlusOrMinusExpression__RightAssignment_1_1 : ( ruleMulOrDivExpression ) ;
+    // InternalHenshin_text.g:11228:1: rule__PlusOrMinusExpression__RightAssignment_1_1 : ( ruleMulOrDivExpression ) ;
     public final void rule__PlusOrMinusExpression__RightAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11141:1: ( ( ruleMulOrDivExpression ) )
-            // InternalHenshin_text.g:11142:2: ( ruleMulOrDivExpression )
+            // InternalHenshin_text.g:11232:1: ( ( ruleMulOrDivExpression ) )
+            // InternalHenshin_text.g:11233:2: ( ruleMulOrDivExpression )
             {
-            // InternalHenshin_text.g:11142:2: ( ruleMulOrDivExpression )
-            // InternalHenshin_text.g:11143:3: ruleMulOrDivExpression
+            // InternalHenshin_text.g:11233:2: ( ruleMulOrDivExpression )
+            // InternalHenshin_text.g:11234:3: ruleMulOrDivExpression
             {
              before(grammarAccess.getPlusOrMinusExpressionAccess().getRightMulOrDivExpressionParserRuleCall_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -33898,21 +34225,21 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__OpAssignment_1_1"
-    // InternalHenshin_text.g:11152:1: rule__MulOrDivExpression__OpAssignment_1_1 : ( ( rule__MulOrDivExpression__OpAlternatives_1_1_0 ) ) ;
+    // InternalHenshin_text.g:11243:1: rule__MulOrDivExpression__OpAssignment_1_1 : ( ( rule__MulOrDivExpression__OpAlternatives_1_1_0 ) ) ;
     public final void rule__MulOrDivExpression__OpAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11156:1: ( ( ( rule__MulOrDivExpression__OpAlternatives_1_1_0 ) ) )
-            // InternalHenshin_text.g:11157:2: ( ( rule__MulOrDivExpression__OpAlternatives_1_1_0 ) )
+            // InternalHenshin_text.g:11247:1: ( ( ( rule__MulOrDivExpression__OpAlternatives_1_1_0 ) ) )
+            // InternalHenshin_text.g:11248:2: ( ( rule__MulOrDivExpression__OpAlternatives_1_1_0 ) )
             {
-            // InternalHenshin_text.g:11157:2: ( ( rule__MulOrDivExpression__OpAlternatives_1_1_0 ) )
-            // InternalHenshin_text.g:11158:3: ( rule__MulOrDivExpression__OpAlternatives_1_1_0 )
+            // InternalHenshin_text.g:11248:2: ( ( rule__MulOrDivExpression__OpAlternatives_1_1_0 ) )
+            // InternalHenshin_text.g:11249:3: ( rule__MulOrDivExpression__OpAlternatives_1_1_0 )
             {
              before(grammarAccess.getMulOrDivExpressionAccess().getOpAlternatives_1_1_0()); 
-            // InternalHenshin_text.g:11159:3: ( rule__MulOrDivExpression__OpAlternatives_1_1_0 )
-            // InternalHenshin_text.g:11159:4: rule__MulOrDivExpression__OpAlternatives_1_1_0
+            // InternalHenshin_text.g:11250:3: ( rule__MulOrDivExpression__OpAlternatives_1_1_0 )
+            // InternalHenshin_text.g:11250:4: rule__MulOrDivExpression__OpAlternatives_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__MulOrDivExpression__OpAlternatives_1_1_0();
@@ -33945,17 +34272,17 @@
 
 
     // $ANTLR start "rule__MulOrDivExpression__RightAssignment_1_2"
-    // InternalHenshin_text.g:11167:1: rule__MulOrDivExpression__RightAssignment_1_2 : ( rulePrimaryExpression ) ;
+    // InternalHenshin_text.g:11258:1: rule__MulOrDivExpression__RightAssignment_1_2 : ( rulePrimaryExpression ) ;
     public final void rule__MulOrDivExpression__RightAssignment_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11171:1: ( ( rulePrimaryExpression ) )
-            // InternalHenshin_text.g:11172:2: ( rulePrimaryExpression )
+            // InternalHenshin_text.g:11262:1: ( ( rulePrimaryExpression ) )
+            // InternalHenshin_text.g:11263:2: ( rulePrimaryExpression )
             {
-            // InternalHenshin_text.g:11172:2: ( rulePrimaryExpression )
-            // InternalHenshin_text.g:11173:3: rulePrimaryExpression
+            // InternalHenshin_text.g:11263:2: ( rulePrimaryExpression )
+            // InternalHenshin_text.g:11264:3: rulePrimaryExpression
             {
              before(grammarAccess.getMulOrDivExpressionAccess().getRightPrimaryExpressionParserRuleCall_1_2_0()); 
             pushFollow(FOLLOW_2);
@@ -33986,17 +34313,17 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__ExpressionAssignment_0_2"
-    // InternalHenshin_text.g:11182:1: rule__PrimaryExpression__ExpressionAssignment_0_2 : ( ruleExpression ) ;
+    // InternalHenshin_text.g:11273:1: rule__PrimaryExpression__ExpressionAssignment_0_2 : ( ruleExpression ) ;
     public final void rule__PrimaryExpression__ExpressionAssignment_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11186:1: ( ( ruleExpression ) )
-            // InternalHenshin_text.g:11187:2: ( ruleExpression )
+            // InternalHenshin_text.g:11277:1: ( ( ruleExpression ) )
+            // InternalHenshin_text.g:11278:2: ( ruleExpression )
             {
-            // InternalHenshin_text.g:11187:2: ( ruleExpression )
-            // InternalHenshin_text.g:11188:3: ruleExpression
+            // InternalHenshin_text.g:11278:2: ( ruleExpression )
+            // InternalHenshin_text.g:11279:3: ruleExpression
             {
              before(grammarAccess.getPrimaryExpressionAccess().getExpressionExpressionParserRuleCall_0_2_0()); 
             pushFollow(FOLLOW_2);
@@ -34027,17 +34354,17 @@
 
 
     // $ANTLR start "rule__PrimaryExpression__ExpressionAssignment_1_2"
-    // InternalHenshin_text.g:11197:1: rule__PrimaryExpression__ExpressionAssignment_1_2 : ( rulePrimaryExpression ) ;
+    // InternalHenshin_text.g:11288:1: rule__PrimaryExpression__ExpressionAssignment_1_2 : ( rulePrimaryExpression ) ;
     public final void rule__PrimaryExpression__ExpressionAssignment_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11201:1: ( ( rulePrimaryExpression ) )
-            // InternalHenshin_text.g:11202:2: ( rulePrimaryExpression )
+            // InternalHenshin_text.g:11292:1: ( ( rulePrimaryExpression ) )
+            // InternalHenshin_text.g:11293:2: ( rulePrimaryExpression )
             {
-            // InternalHenshin_text.g:11202:2: ( rulePrimaryExpression )
-            // InternalHenshin_text.g:11203:3: rulePrimaryExpression
+            // InternalHenshin_text.g:11293:2: ( rulePrimaryExpression )
+            // InternalHenshin_text.g:11294:3: rulePrimaryExpression
             {
              before(grammarAccess.getPrimaryExpressionAccess().getExpressionPrimaryExpressionParserRuleCall_1_2_0()); 
             pushFollow(FOLLOW_2);
@@ -34068,21 +34395,21 @@
 
 
     // $ANTLR start "rule__AtomicExpression__ValueAssignment_0_1"
-    // InternalHenshin_text.g:11212:1: rule__AtomicExpression__ValueAssignment_0_1 : ( ( RULE_ID ) ) ;
+    // InternalHenshin_text.g:11303:1: rule__AtomicExpression__ValueAssignment_0_1 : ( ( RULE_ID ) ) ;
     public final void rule__AtomicExpression__ValueAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11216:1: ( ( ( RULE_ID ) ) )
-            // InternalHenshin_text.g:11217:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:11307:1: ( ( ( RULE_ID ) ) )
+            // InternalHenshin_text.g:11308:2: ( ( RULE_ID ) )
             {
-            // InternalHenshin_text.g:11217:2: ( ( RULE_ID ) )
-            // InternalHenshin_text.g:11218:3: ( RULE_ID )
+            // InternalHenshin_text.g:11308:2: ( ( RULE_ID ) )
+            // InternalHenshin_text.g:11309:3: ( RULE_ID )
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueParameterCrossReference_0_1_0()); 
-            // InternalHenshin_text.g:11219:3: ( RULE_ID )
-            // InternalHenshin_text.g:11220:4: RULE_ID
+            // InternalHenshin_text.g:11310:3: ( RULE_ID )
+            // InternalHenshin_text.g:11311:4: RULE_ID
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueParameterIDTerminalRuleCall_0_1_0_1()); 
             match(input,RULE_ID,FOLLOW_2); 
@@ -34113,17 +34440,17 @@
 
 
     // $ANTLR start "rule__AtomicExpression__ValueAssignment_1_1"
-    // InternalHenshin_text.g:11231:1: rule__AtomicExpression__ValueAssignment_1_1 : ( ruleEString ) ;
+    // InternalHenshin_text.g:11322:1: rule__AtomicExpression__ValueAssignment_1_1 : ( ruleEString ) ;
     public final void rule__AtomicExpression__ValueAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11235:1: ( ( ruleEString ) )
-            // InternalHenshin_text.g:11236:2: ( ruleEString )
+            // InternalHenshin_text.g:11326:1: ( ( ruleEString ) )
+            // InternalHenshin_text.g:11327:2: ( ruleEString )
             {
-            // InternalHenshin_text.g:11236:2: ( ruleEString )
-            // InternalHenshin_text.g:11237:3: ruleEString
+            // InternalHenshin_text.g:11327:2: ( ruleEString )
+            // InternalHenshin_text.g:11328:3: ruleEString
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueEStringParserRuleCall_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -34154,17 +34481,17 @@
 
 
     // $ANTLR start "rule__AtomicExpression__JavaParameterAssignment_1_3_0"
-    // InternalHenshin_text.g:11246:1: rule__AtomicExpression__JavaParameterAssignment_1_3_0 : ( ruleExpression ) ;
+    // InternalHenshin_text.g:11337:1: rule__AtomicExpression__JavaParameterAssignment_1_3_0 : ( ruleExpression ) ;
     public final void rule__AtomicExpression__JavaParameterAssignment_1_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11250:1: ( ( ruleExpression ) )
-            // InternalHenshin_text.g:11251:2: ( ruleExpression )
+            // InternalHenshin_text.g:11341:1: ( ( ruleExpression ) )
+            // InternalHenshin_text.g:11342:2: ( ruleExpression )
             {
-            // InternalHenshin_text.g:11251:2: ( ruleExpression )
-            // InternalHenshin_text.g:11252:3: ruleExpression
+            // InternalHenshin_text.g:11342:2: ( ruleExpression )
+            // InternalHenshin_text.g:11343:3: ruleExpression
             {
              before(grammarAccess.getAtomicExpressionAccess().getJavaParameterExpressionParserRuleCall_1_3_0_0()); 
             pushFollow(FOLLOW_2);
@@ -34195,17 +34522,17 @@
 
 
     // $ANTLR start "rule__AtomicExpression__JavaParameterAssignment_1_3_1_1"
-    // InternalHenshin_text.g:11261:1: rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 : ( ruleExpression ) ;
+    // InternalHenshin_text.g:11352:1: rule__AtomicExpression__JavaParameterAssignment_1_3_1_1 : ( ruleExpression ) ;
     public final void rule__AtomicExpression__JavaParameterAssignment_1_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11265:1: ( ( ruleExpression ) )
-            // InternalHenshin_text.g:11266:2: ( ruleExpression )
+            // InternalHenshin_text.g:11356:1: ( ( ruleExpression ) )
+            // InternalHenshin_text.g:11357:2: ( ruleExpression )
             {
-            // InternalHenshin_text.g:11266:2: ( ruleExpression )
-            // InternalHenshin_text.g:11267:3: ruleExpression
+            // InternalHenshin_text.g:11357:2: ( ruleExpression )
+            // InternalHenshin_text.g:11358:3: ruleExpression
             {
              before(grammarAccess.getAtomicExpressionAccess().getJavaParameterExpressionParserRuleCall_1_3_1_1_0()); 
             pushFollow(FOLLOW_2);
@@ -34236,17 +34563,17 @@
 
 
     // $ANTLR start "rule__AtomicExpression__ValueAssignment_2_1"
-    // InternalHenshin_text.g:11276:1: rule__AtomicExpression__ValueAssignment_2_1 : ( ruleJavaAttribute ) ;
+    // InternalHenshin_text.g:11367:1: rule__AtomicExpression__ValueAssignment_2_1 : ( ruleJavaAttribute ) ;
     public final void rule__AtomicExpression__ValueAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11280:1: ( ( ruleJavaAttribute ) )
-            // InternalHenshin_text.g:11281:2: ( ruleJavaAttribute )
+            // InternalHenshin_text.g:11371:1: ( ( ruleJavaAttribute ) )
+            // InternalHenshin_text.g:11372:2: ( ruleJavaAttribute )
             {
-            // InternalHenshin_text.g:11281:2: ( ruleJavaAttribute )
-            // InternalHenshin_text.g:11282:3: ruleJavaAttribute
+            // InternalHenshin_text.g:11372:2: ( ruleJavaAttribute )
+            // InternalHenshin_text.g:11373:3: ruleJavaAttribute
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueJavaAttributeParserRuleCall_2_1_0()); 
             pushFollow(FOLLOW_2);
@@ -34277,17 +34604,17 @@
 
 
     // $ANTLR start "rule__AtomicExpression__ValueAssignment_3_1"
-    // InternalHenshin_text.g:11291:1: rule__AtomicExpression__ValueAssignment_3_1 : ( RULE_STRING ) ;
+    // InternalHenshin_text.g:11382:1: rule__AtomicExpression__ValueAssignment_3_1 : ( RULE_STRING ) ;
     public final void rule__AtomicExpression__ValueAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11295:1: ( ( RULE_STRING ) )
-            // InternalHenshin_text.g:11296:2: ( RULE_STRING )
+            // InternalHenshin_text.g:11386:1: ( ( RULE_STRING ) )
+            // InternalHenshin_text.g:11387:2: ( RULE_STRING )
             {
-            // InternalHenshin_text.g:11296:2: ( RULE_STRING )
-            // InternalHenshin_text.g:11297:3: RULE_STRING
+            // InternalHenshin_text.g:11387:2: ( RULE_STRING )
+            // InternalHenshin_text.g:11388:3: RULE_STRING
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueSTRINGTerminalRuleCall_3_1_0()); 
             match(input,RULE_STRING,FOLLOW_2); 
@@ -34314,17 +34641,17 @@
 
 
     // $ANTLR start "rule__AtomicExpression__ValueAssignment_4_1"
-    // InternalHenshin_text.g:11306:1: rule__AtomicExpression__ValueAssignment_4_1 : ( RULE_DECIMAL ) ;
+    // InternalHenshin_text.g:11397:1: rule__AtomicExpression__ValueAssignment_4_1 : ( RULE_DECIMAL ) ;
     public final void rule__AtomicExpression__ValueAssignment_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11310:1: ( ( RULE_DECIMAL ) )
-            // InternalHenshin_text.g:11311:2: ( RULE_DECIMAL )
+            // InternalHenshin_text.g:11401:1: ( ( RULE_DECIMAL ) )
+            // InternalHenshin_text.g:11402:2: ( RULE_DECIMAL )
             {
-            // InternalHenshin_text.g:11311:2: ( RULE_DECIMAL )
-            // InternalHenshin_text.g:11312:3: RULE_DECIMAL
+            // InternalHenshin_text.g:11402:2: ( RULE_DECIMAL )
+            // InternalHenshin_text.g:11403:3: RULE_DECIMAL
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueDECIMALTerminalRuleCall_4_1_0()); 
             match(input,RULE_DECIMAL,FOLLOW_2); 
@@ -34351,17 +34678,17 @@
 
 
     // $ANTLR start "rule__AtomicExpression__ValueAssignment_5_1"
-    // InternalHenshin_text.g:11321:1: rule__AtomicExpression__ValueAssignment_5_1 : ( RULE_NEGATIVE ) ;
+    // InternalHenshin_text.g:11412:1: rule__AtomicExpression__ValueAssignment_5_1 : ( RULE_NEGATIVE ) ;
     public final void rule__AtomicExpression__ValueAssignment_5_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11325:1: ( ( RULE_NEGATIVE ) )
-            // InternalHenshin_text.g:11326:2: ( RULE_NEGATIVE )
+            // InternalHenshin_text.g:11416:1: ( ( RULE_NEGATIVE ) )
+            // InternalHenshin_text.g:11417:2: ( RULE_NEGATIVE )
             {
-            // InternalHenshin_text.g:11326:2: ( RULE_NEGATIVE )
-            // InternalHenshin_text.g:11327:3: RULE_NEGATIVE
+            // InternalHenshin_text.g:11417:2: ( RULE_NEGATIVE )
+            // InternalHenshin_text.g:11418:3: RULE_NEGATIVE
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueNEGATIVETerminalRuleCall_5_1_0()); 
             match(input,RULE_NEGATIVE,FOLLOW_2); 
@@ -34388,17 +34715,17 @@
 
 
     // $ANTLR start "rule__AtomicExpression__ValueAssignment_6_1"
-    // InternalHenshin_text.g:11336:1: rule__AtomicExpression__ValueAssignment_6_1 : ( RULE_INT ) ;
+    // InternalHenshin_text.g:11427:1: rule__AtomicExpression__ValueAssignment_6_1 : ( RULE_INT ) ;
     public final void rule__AtomicExpression__ValueAssignment_6_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11340:1: ( ( RULE_INT ) )
-            // InternalHenshin_text.g:11341:2: ( RULE_INT )
+            // InternalHenshin_text.g:11431:1: ( ( RULE_INT ) )
+            // InternalHenshin_text.g:11432:2: ( RULE_INT )
             {
-            // InternalHenshin_text.g:11341:2: ( RULE_INT )
-            // InternalHenshin_text.g:11342:3: RULE_INT
+            // InternalHenshin_text.g:11432:2: ( RULE_INT )
+            // InternalHenshin_text.g:11433:3: RULE_INT
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueINTTerminalRuleCall_6_1_0()); 
             match(input,RULE_INT,FOLLOW_2); 
@@ -34425,17 +34752,17 @@
 
 
     // $ANTLR start "rule__AtomicExpression__ValueAssignment_7_1"
-    // InternalHenshin_text.g:11351:1: rule__AtomicExpression__ValueAssignment_7_1 : ( ruleEBoolean ) ;
+    // InternalHenshin_text.g:11442:1: rule__AtomicExpression__ValueAssignment_7_1 : ( ruleEBoolean ) ;
     public final void rule__AtomicExpression__ValueAssignment_7_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalHenshin_text.g:11355:1: ( ( ruleEBoolean ) )
-            // InternalHenshin_text.g:11356:2: ( ruleEBoolean )
+            // InternalHenshin_text.g:11446:1: ( ( ruleEBoolean ) )
+            // InternalHenshin_text.g:11447:2: ( ruleEBoolean )
             {
-            // InternalHenshin_text.g:11356:2: ( ruleEBoolean )
-            // InternalHenshin_text.g:11357:3: ruleEBoolean
+            // InternalHenshin_text.g:11447:2: ( ruleEBoolean )
+            // InternalHenshin_text.g:11448:3: ruleEBoolean
             {
              before(grammarAccess.getAtomicExpressionAccess().getValueEBooleanParserRuleCall_7_1_0()); 
             pushFollow(FOLLOW_2);
@@ -34469,14 +34796,15 @@
 
     protected DFA19 dfa19 = new DFA19(this);
     static final String dfa_1s = "\14\uffff";
-    static final String dfa_2s = "\1\uffff\1\10\10\uffff\1\13\1\uffff";
-    static final String dfa_3s = "\2\4\5\uffff\1\4\2\uffff\1\4\1\uffff";
-    static final String dfa_4s = "\1\25\1\146\5\uffff\1\4\2\uffff\1\146\1\uffff";
-    static final String dfa_5s = "\2\uffff\1\4\1\5\1\6\1\7\1\10\1\uffff\1\1\1\2\1\uffff\1\3";
+    static final String dfa_2s = "\1\uffff\1\7\10\uffff\1\13\1\uffff";
+    static final String dfa_3s = "\2\4\6\uffff\1\4\1\uffff\1\4\1\uffff";
+    static final String dfa_4s = "\1\25\1\152\6\uffff\1\4\1\uffff\1\152\1\uffff";
+    static final String dfa_5s = "\2\uffff\1\4\1\5\1\6\1\7\1\10\1\1\1\uffff\1\2\1\uffff\1\3";
     static final String dfa_6s = "\14\uffff}>";
     static final String[] dfa_7s = {
             "\1\1\1\2\1\3\1\4\1\5\13\uffff\2\6",
-            "\1\10\10\uffff\6\10\3\uffff\10\10\42\uffff\1\7\1\uffff\1\11\1\10\1\uffff\2\10\6\uffff\1\10\12\uffff\1\10\13\uffff\3\10",
+            "\1\7\10\uffff\6\7\3\uffff\10\7\46\uffff\1\10\1\uffff\1\11\1\7\1\uffff\2\7\6\uffff\1\7\12\uffff\1\7\13\uffff\3\7",
+            "",
             "",
             "",
             "",
@@ -34484,8 +34812,7 @@
             "",
             "\1\12",
             "",
-            "",
-            "\1\13\10\uffff\6\13\3\uffff\10\13\42\uffff\1\11\1\uffff\1\11\1\13\1\uffff\2\13\6\uffff\1\13\12\uffff\1\13\13\uffff\3\13",
+            "\1\13\10\uffff\6\13\3\uffff\10\13\46\uffff\1\11\1\uffff\1\11\1\13\1\uffff\2\13\6\uffff\1\13\12\uffff\1\13\13\uffff\3\13",
             ""
     };
 
@@ -34511,75 +34838,77 @@
             this.transition = dfa_7;
         }
         public String getDescription() {
-            return "1908:1: rule__AtomicExpression__Alternatives : ( ( ( rule__AtomicExpression__Group_0__0 ) ) | ( ( rule__AtomicExpression__Group_1__0 ) ) | ( ( rule__AtomicExpression__Group_2__0 ) ) | ( ( rule__AtomicExpression__Group_3__0 ) ) | ( ( rule__AtomicExpression__Group_4__0 ) ) | ( ( rule__AtomicExpression__Group_5__0 ) ) | ( ( rule__AtomicExpression__Group_6__0 ) ) | ( ( rule__AtomicExpression__Group_7__0 ) ) );";
+            return "1924:1: rule__AtomicExpression__Alternatives : ( ( ( rule__AtomicExpression__Group_0__0 ) ) | ( ( rule__AtomicExpression__Group_1__0 ) ) | ( ( rule__AtomicExpression__Group_2__0 ) ) | ( ( rule__AtomicExpression__Group_3__0 ) ) | ( ( rule__AtomicExpression__Group_4__0 ) ) | ( ( rule__AtomicExpression__Group_5__0 ) ) | ( ( rule__AtomicExpression__Group_6__0 ) ) | ( ( rule__AtomicExpression__Group_7__0 ) ) );";
         }
     }
  
 
     public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
     public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000000012L,0x0000000E78000010L});
-    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000082L});
-    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x8000000000000002L});
-    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000082L});
+    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000000012L,0x000000E780000100L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000820L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000820L});
     public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
-    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000008L});
-    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
-    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004F00L});
-    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
-    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004F00L});
-    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
-    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000000010L,0x0000000E78000010L});
-    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000300000L});
-    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x00000000003001F0L,0x0000000002000004L});
-    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002040L});
-    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x000000000003E000L,0x00000000006C8020L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x000000000003E002L,0x00000000006C8000L});
-    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x000000000003E010L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x000000000003E000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x000000000003E010L,0x0000004000000020L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x000000000003E012L,0x0000004000000000L});
-    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000010L,0x0000000002000004L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x00000000000C0000L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x00000000000C0002L});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
-    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x00000000004C8020L});
-    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000002L,0x00000000004C8000L});
-    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000020L});
-    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000012L});
-    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
-    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
-    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
-    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x7FFFFFFFC0000010L});
-    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000040002L});
-    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000000C00000L});
-    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000C00002L});
-    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x000000000F000000L});
-    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x000000000F000002L});
-    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000003000000000L});
-    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000000002L,0x0000003000000000L});
-    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
-    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000030000000L});
-    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000030000002L});
-    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x00000000003001F0L,0x000000000200000CL});
-    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000000080L});
-    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x00000003C0000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000000L,0x000000000004F000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000002L,0x000000000004F000L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000400L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x00000003C0000010L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000000010L,0x000000E780000100L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000300000L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x00000000003001F0L,0x0000000020000040L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020400L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x000000000003E000L,0x0000000006C80200L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x000000000003E002L,0x0000000006C80000L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x000000000003E010L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x000000000003E000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x000000000003E010L,0x0000040000000200L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x000000000003E012L,0x0000040000000000L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000010L,0x0000000020000040L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x00000000000C0000L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x00000000000C0002L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000004C80200L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000002L,0x0000000004C80000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000200L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000012L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000080L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0xFFFFFFFC00000010L,0x0000000000000007L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000040002L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000C00000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000C00002L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x000000000F000000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x000000000F000002L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000000000L,0x0000030000000000L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000000000002L,0x0000030000000000L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000030000000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000030000002L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x00000000003001F0L,0x00000000200000C0L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000000000100L});
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.henshin.text.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.henshin.text.tests/META-INF/MANIFEST.MF
index 3c4b582..fa8a5d6 100644
--- a/plugins/org.eclipse.emf.henshin.text.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.henshin.text.tests/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
  org.eclipse.xtext.junit4,

  org.eclipse.xtext.xbase.junit,

  org.eclipse.xtext.xbase.lib

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-1.7

 Export-Package: org.eclipse.emf.henshin.text.tests

 Import-Package: org.hamcrest.core,

  org.junit;version="4.5.0",

diff --git a/plugins/org.eclipse.emf.henshin.text.tests/src/org/eclipse/emf/henshin/text/tests/RuleTests.xtend b/plugins/org.eclipse.emf.henshin.text.tests/src/org/eclipse/emf/henshin/text/tests/RuleTests.xtend
index 377f08e..e0bc6ee 100644
--- a/plugins/org.eclipse.emf.henshin.text.tests/src/org/eclipse/emf/henshin/text/tests/RuleTests.xtend
+++ b/plugins/org.eclipse.emf.henshin.text.tests/src/org/eclipse/emf/henshin/text/tests/RuleTests.xtend
@@ -1,21 +1,22 @@
 package org.eclipse.emf.henshin.text.tests
 
-import org.junit.runner.RunWith
-import org.eclipse.xtext.junit4.XtextRunner
-import org.eclipse.xtext.junit4.InjectWith
 import javax.inject.Inject
-import org.eclipse.xtext.junit4.util.ParseHelper
+import org.eclipse.emf.henshin.text.henshin_text.CheckDangling
+import org.eclipse.emf.henshin.text.henshin_text.ComparisonExpression
+import org.eclipse.emf.henshin.text.henshin_text.Conditions
+import org.eclipse.emf.henshin.text.henshin_text.EqualityExpression
+import org.eclipse.emf.henshin.text.henshin_text.Graph
+import org.eclipse.emf.henshin.text.henshin_text.InjectiveMatching
+import org.eclipse.emf.henshin.text.henshin_text.JavaImport
 import org.eclipse.emf.henshin.text.henshin_text.Model
+import org.eclipse.emf.henshin.text.henshin_text.ParameterKind
+import org.eclipse.emf.henshin.text.henshin_text.Rule
+import org.eclipse.xtext.junit4.InjectWith
+import org.eclipse.xtext.junit4.XtextRunner
+import org.eclipse.xtext.junit4.util.ParseHelper
 import org.junit.Assert
 import org.junit.Test
-import org.eclipse.emf.henshin.text.henshin_text.InjectiveMatching
-import org.eclipse.emf.henshin.text.henshin_text.CheckDangling
-import org.eclipse.emf.henshin.text.henshin_text.Conditions
-import org.eclipse.emf.henshin.text.henshin_text.JavaImport
-import org.eclipse.emf.henshin.text.henshin_text.Graph
-import org.eclipse.emf.henshin.text.henshin_text.Rule
-import org.eclipse.emf.henshin.text.henshin_text.ComparisonExpression
-import org.eclipse.emf.henshin.text.henshin_text.EqualityExpression
+import org.junit.runner.RunWith
 
 @RunWith(typeof(XtextRunner))
 @InjectWith(typeof(Henshin_textInjectorProvider))
@@ -206,4 +207,20 @@
 		Assert::assertEquals("!=",(conditions.attributeConditions.get(0) as EqualityExpression).op)
 	 }
 	
+	/**
+	 * Test parameterkind
+	 */
+	 @Test
+	 def testParmeterKinds(){
+	 	val model = ''' ePackageImport testmodel
+						rule rulename(VAR value:EInt, IN v2:EInt, OUT v3:EInt, INOUT v4:EInt, v5:EInt){
+							graph{}
+						}'''.parse
+		val rule = model.transformationsystem.get(0) as Rule
+		Assert::assertEquals(rule.parameters.get(0).kind, ParameterKind.VAR)
+		Assert::assertEquals(rule.parameters.get(1).kind, ParameterKind.IN)
+		Assert::assertEquals(rule.parameters.get(2).kind, ParameterKind.OUT)
+		Assert::assertEquals(rule.parameters.get(3).kind, ParameterKind.INOUT)
+		Assert::assertEquals(rule.parameters.get(4).kind, ParameterKind.UNKNOWN)
+	 }
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.henshin.text.tests/xtend-gen/org/eclipse/emf/henshin/text/tests/.gitignore b/plugins/org.eclipse.emf.henshin.text.tests/xtend-gen/org/eclipse/emf/henshin/text/tests/.gitignore
index 3db6d22..3aa8910 100644
--- a/plugins/org.eclipse.emf.henshin.text.tests/xtend-gen/org/eclipse/emf/henshin/text/tests/.gitignore
+++ b/plugins/org.eclipse.emf.henshin.text.tests/xtend-gen/org/eclipse/emf/henshin/text/tests/.gitignore
@@ -17,3 +17,4 @@
 /RuleTests.java
 /TransformationTests.java
 /UnitTests.java
+/.Henshin_textParsingTest.java._trace
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/.classpath b/plugins/org.eclipse.emf.henshin.text.transformation.tests/.classpath
new file mode 100644
index 0000000..428337e
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/.gitignore b/plugins/org.eclipse.emf.henshin.text.transformation.tests/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/.project b/plugins/org.eclipse.emf.henshin.text.transformation.tests/.project
new file mode 100644
index 0000000..5dd068c
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.emf.henshin.text.transformation.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.henshin.text.transformation.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.henshin.text.transformation.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..62c8d02
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0

+Bundle-ManifestVersion: 2

+Bundle-Name: org.eclipse.emf.henshin.text.transformation.tests

+Bundle-SymbolicName: org.eclipse.emf.henshin.text.transformation.tests

+Bundle-Version: 1.5.0.qualifier

+Bundle-RequiredExecutionEnvironment: JavaSE-1.7

+Require-Bundle: org.junit;bundle-version="4.12.0",

+ org.eclipse.emf.ecore,

+ org.eclipse.emf.compare,

+ org.eclipse.emf.ecore.xmi,

+ com.google.guava,

+ org.eclipse.xtext.xbase.lib,

+ org.eclipse.xtend.lib,

+ org.eclipse.xtend.lib.macro,

+ org.eclipse.xtext.junit4;bundle-version="2.10.0",

+ org.eclipse.emf.henshin.model,

+ org.apache.log4j;bundle-version="1.2.15",

+ com.google.inject;bundle-version="3.0.0",

+ org.eclipse.xtext,

+ org.eclipse.m2m.qvt.oml,

+ org.eclipse.emf.henshin.model;bundle-version="1.3.0",

+ org.eclipse.emf.henshin.text.transformation;bundle-version="1.0.0",

+ org.eclipse.emf.henshin.text

+Import-Package: com.google.inject,

+ org.eclipse.emf.henshin.text,

+ org.eclipse.emf.henshin.text.ui.util

+Bundle-Vendor: Eclipse Modeling Project

+

diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/build.properties b/plugins/org.eclipse.emf.henshin.text.transformation.tests/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/AllTests.java b/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/AllTests.java
new file mode 100644
index 0000000..083a220
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/AllTests.java
@@ -0,0 +1,12 @@
+package org.eclipse.emf.henshin.text.transformation.tests;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses({TestTransformation.class})
+public class AllTests {
+
+	
+}
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/TestTransformation.xtend b/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/TestTransformation.xtend
new file mode 100644
index 0000000..bbfd64e
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/TestTransformation.xtend
@@ -0,0 +1,96 @@
+package org.eclipse.emf.henshin.text.transformation.tests
+
+import org.w3c.dom.Document
+import org.eclipse.emf.henshin.text.transformation.tests.util.AdaptID
+import org.eclipse.emf.henshin.text.transformation.tests.util.Compare
+import org.junit.Assert
+import org.junit.Test
+import org.eclipse.emf.henshin.text.transformation.tests.util.DocumentUtil
+import java.io.File
+import org.eclipse.emf.henshin.text.ui.util.Transformation
+
+class TestTransformation {
+	val DocumentUtil document= new DocumentUtil()
+	val AdaptID adaptID =new AdaptID()
+	val Compare compare=new Compare()
+	val Transformation transfom=new Transformation()
+	val transformationPath="platform:/resource/org.eclipse.emf.henshin.text.transformation/transforms/Henshin_text2HenshinTransformation/Henshin_text2HenshinTransformation.qvto"
+
+	
+	@Test
+	def bankTest(){
+		val originalPath="testCases/bank/bank.henshin"
+		val transformationPath=document.saveResource(transfom.transformHenshin_textToHenshin(null,transformationPath,"testCases/bank/bank.henshin_text"))
+		val adaptPath=transformationPath.replace("henshin_text.henshin","henshin_textAdapt.henshin")
+		assertModelEquality(originalPath,transformationPath,adaptPath)	
+		cleanUp(transformationPath)	
+		cleanUp(adaptPath)	 
+	}
+	
+	@Test
+	def gridFullNestedTest(){
+		val originalPath="testCases/grid-full_nestedUnits/grid-full.henshin"
+		val transformationPath=document.saveResource(transfom.transformHenshin_textToHenshin(null,transformationPath,"testCases/grid-full_nestedUnits/grid-full.henshin_text"))
+		val adaptPath=transformationPath.replace("henshin_text.henshin","henshin_textAdapt.henshin")
+		assertModelEquality(originalPath,transformationPath,adaptPath)
+		cleanUp(transformationPath)	
+		cleanUp(adaptPath)		 
+	}
+	
+	@Test
+	def gridFullTest(){
+		val originalPath="testCases/grid-full/grid-full.henshin"
+		val transformationPath=document.saveResource(transfom.transformHenshin_textToHenshin(null,transformationPath,"testCases/grid-full/grid-full.henshin_text"))
+		val adaptPath=transformationPath.replace("henshin_text.henshin","henshin_textAdapt.henshin")
+		assertModelEquality(originalPath,transformationPath,adaptPath)
+		cleanUp(transformationPath)	
+		cleanUp(adaptPath)		 
+	}
+	
+	@Test
+	def moviesTest(){
+		val originalPath="testCases/movies/movies.henshin"
+		val transformationPath=document.saveResource(transfom.transformHenshin_textToHenshin(null,transformationPath,"testCases/movies/movies.henshin_text"))
+		val adaptPath=transformationPath.replace("henshin_text.henshin","henshin_textAdapt.henshin")
+		assertModelEquality(originalPath,transformationPath,adaptPath)
+		cleanUp(transformationPath)	
+		cleanUp(adaptPath)		 
+	}
+	
+	@Test
+	def mutualexclusionTest(){
+		val originalPath="testCases/mutualexclusion/mutualexclusion.henshin"
+		val transformationPath=document.saveResource(transfom.transformHenshin_textToHenshin(null,transformationPath,"testCases/mutualexclusion/mutualexclusion.henshin_text"))
+		val adaptPath=transformationPath.replace("henshin_text.henshin","henshin_textAdapt.henshin")
+		assertModelEquality(originalPath,transformationPath,adaptPath)
+		cleanUp(transformationPath)	
+		cleanUp(adaptPath)		 
+	}
+	
+	def void assertModelEquality(String originalPath,String transformationPath,String adaptPath){	
+		if(adaptPath.equals("Error! Can not save!")){
+			Assert::fail(adaptPath)
+		}
+		val Document originalXML = document.getDocument(originalPath)
+		var Document transformationXML = document.getDocument(transformationPath)
+		if((originalXML==null) || (transformationXML==null)){
+			Assert::fail("Can not load file!");
+		}
+		adaptID.adaptID(originalXML,transformationXML,adaptPath)
+		transformationXML = document.getDocument(adaptPath)
+		var message=compare.compareAttributesByNode(originalXML.getChildNodes(),transformationXML.getChildNodes())
+		if(!(message.equals(""))){
+			Assert::fail(message)
+		}
+		message=compare.emfCompare(originalPath,adaptPath)
+		if(!(message.equals(""))){
+			Assert::fail(message)
+		}
+	}
+	
+	def void cleanUp(String path){
+		val File currentFile = new File(path);
+   		//currentFile.delete()
+	}
+
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/util/AdaptID.java b/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/util/AdaptID.java
new file mode 100644
index 0000000..aa56205
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/util/AdaptID.java
@@ -0,0 +1,83 @@
+package org.eclipse.emf.henshin.text.transformation.tests.util;
+
+import java.io.File;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.junit.Assert;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+
+public class AdaptID {
+	
+	
+	/**
+	 * Adapt ids in transformed henshin_text file (transformationXML) to fit the ids in the original (originalXML)
+	 * 
+	 * @param originalXML Original henshin transformation
+	 * @param transformationXML Transformed henshin_text transformation
+	 * @param adaptPath Path where the adapted henshin_text transformation file should be saved
+	 */
+	public void adaptID(Document originalXML,Document transformationXML,String adaptPath){
+		adaptIDinNodes(originalXML.getChildNodes(),transformationXML.getChildNodes(),transformationXML.getChildNodes());
+		try{
+			//Save adaped henshin Transformation
+			Transformer transformer = TransformerFactory.newInstance().newTransformer();
+			Result output = new StreamResult(new File(adaptPath));
+			Source input = new DOMSource(transformationXML);
+			transformer.transform(input, output);
+		}catch(TransformerException  e) {
+			Assert.fail("Can not save adapted file");
+		}
+	}
+	
+	
+	/**
+	 * Iterates through all Nodes in originalNodes and checks if they have an attribute called xmi:id and replace its value in the corresponding element in transformationNodes
+	 * 
+	 * @param originalNodes Nodes from the original henshin transformation (dependent on recursion)
+	 * @param transformationNodes Nodes from the transformed henshin_text file (dependent on recursion)
+	 * @param transformationXML Nodes from the transformed henshin_text file 
+	 */
+	private void adaptIDinNodes(NodeList originalNodes,NodeList transformationNodes,NodeList transformationXML){
+		if(originalNodes.getLength()>=transformationNodes.getLength()){
+			for(int i=0;(i<originalNodes.getLength()&&i<transformationNodes.getLength());i++){
+				if(originalNodes.item(i).hasAttributes()){
+					if((originalNodes.item(i).getAttributes().getNamedItem("xmi:id")!=null)&&(transformationNodes.item(i).getAttributes().getNamedItem("xmi:id")!=null)&&
+							(originalNodes.item(i).getAttributes().getNamedItem("xmi:id").getNodeValue()!=transformationNodes.item(i).getAttributes().getNamedItem("xmi:id").getNodeValue())&&
+							(originalNodes.item(i).getNodeName()==transformationNodes.item(i).getNodeName())){
+						replace(transformationNodes.item(i).getAttributes().getNamedItem("xmi:id").getNodeValue(),originalNodes.item(i).getAttributes().getNamedItem("xmi:id").getNodeValue(),transformationXML);
+					}
+				}
+				adaptIDinNodes(originalNodes.item(i).getChildNodes(),transformationNodes.item(i).getChildNodes(),transformationNodes);
+			}
+		}
+		
+	}
+	
+	
+	/**
+	 * Replaces the attribute value oldID with newID
+	 * 
+	 * @param oldID Attribute value which should be replaced
+	 * @param newID New attribute value
+	 * @param transformationNodes List of nodes whose attribute values are to be replaced
+	 */
+	private void replace(String oldID, String newID,NodeList transformationNodes){
+		for(int i=0;i<transformationNodes.getLength();i++){
+			if(transformationNodes.item(i).hasAttributes()){
+				for(int j=0;j<transformationNodes.item(i).getAttributes().getLength();j++){
+					transformationNodes.item(i).getAttributes().item(j).setNodeValue(transformationNodes.item(i).getAttributes().item(j).getNodeValue().replace(oldID,newID));
+				}
+			}
+			replace(oldID,newID,transformationNodes.item(i).getChildNodes());
+		}
+	}
+
+}
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/util/Compare.java b/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/util/Compare.java
new file mode 100644
index 0000000..9bd7e16
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/util/Compare.java
@@ -0,0 +1,92 @@
+package org.eclipse.emf.henshin.text.transformation.tests.util;
+
+import java.util.List;
+
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.DifferenceKind;
+import org.eclipse.emf.compare.EMFCompare;
+import org.eclipse.emf.compare.impl.ReferenceChangeImpl;
+import org.eclipse.emf.compare.scope.DefaultComparisonScope;
+import org.eclipse.emf.compare.scope.IComparisonScope;
+import org.eclipse.emf.henshin.model.resource.HenshinResourceSet;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class Compare {
+
+	/**
+	 * Compares the attribute values
+	 * 
+	 * @param originalNodes List of nodes from the original henshin transformation
+	 * @param transformationNodes List of nodes from the adapted henshin_text transformation
+	 * @return Error message
+	 */
+	public String compareAttributesByNode(NodeList originalNodes, NodeList transformationNodes) {
+		String message = "";
+		for (int i = 0; i < transformationNodes.getLength(); i++) {
+			if (transformationNodes.item(i).hasAttributes()) {
+				for (int j = 0; j < transformationNodes.item(i).getAttributes().getLength(); j++) {
+					Node originalAttribute = originalNodes.item(i).getAttributes()
+							.getNamedItem(transformationNodes.item(i).getAttributes().item(j).getNodeName());
+					Node transformationAttribute = transformationNodes.item(i).getAttributes().item(j);
+					if ((originalAttribute != null)
+							&& !(isEqual(originalAttribute.getNodeValue(), transformationAttribute.getNodeValue()))) {
+						return "Expected: " + originalAttribute + " Transformed: " + transformationAttribute;
+					}
+				}
+			}
+			message = message + compareAttributesByNode(originalNodes.item(i).getChildNodes(),
+					transformationNodes.item(i).getChildNodes());
+		}
+		return message;
+	}
+
+	/**
+	 * Check if the String transformation is contained in original
+	 * 
+	 * @param original original String
+	 * @param transformation transformed String
+	 * @return true if original contains transformation
+	 */
+	private boolean isEqual(String original, String transformation) {
+		String transformationArray[] = transformation.split(" ");
+		boolean contained = true;
+		if (transformationArray.length != original.split(" ").length) {
+			return false;
+		}
+		for (int i = 0; i < transformationArray.length; i++) {
+			contained = contained && (original.contains(transformationArray[i]));
+		}
+		return contained;
+
+	}
+
+	/**
+	 * Compares models with emf compare
+	 * 
+	 * @param originalPath Path to the original henshin transformation
+	 * @param transformationPath Path to the adapted henshin_text transformation
+	 * @return textual representation of the differences
+	 */
+	public String emfCompare(String originalPath, String transformationPath) {
+		String message = "";
+		String[] originalPathArray = originalPath.split("/");
+		String path = originalPathArray[0] + "/" + originalPathArray[1];
+		HenshinResourceSet resourceSetOriginal = new HenshinResourceSet(path);
+		HenshinResourceSet resourceSetTransformation = new HenshinResourceSet(path);
+		resourceSetOriginal.getResource(originalPath.replace(path + "/", ""));
+		resourceSetTransformation.getResource(transformationPath.replace(path + "/", ""));
+		IComparisonScope scope = new DefaultComparisonScope(resourceSetOriginal, resourceSetTransformation, null);
+		Comparison comparison = EMFCompare.builder().build().compare(scope);
+		List<Diff> differences = comparison.getDifferences();
+		for (Diff difference : differences) {
+			// we ignore differences in ordering of references 
+			if (! (difference instanceof ReferenceChangeImpl && difference.getKind() == DifferenceKind.MOVE ))
+			{
+				message = message + difference + "\n";
+			}
+		}
+		return message;
+	}
+}
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/util/DocumentUtil.java b/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/util/DocumentUtil.java
new file mode 100644
index 0000000..afe924e
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/src/org/eclipse/emf/henshin/text/transformation/tests/util/DocumentUtil.java
@@ -0,0 +1,55 @@
+package org.eclipse.emf.henshin.text.transformation.tests.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collections;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+
+
+public class DocumentUtil {
+	private DocumentBuilderFactory factory;
+	private DocumentBuilder documentBuilder;
+	
+	public DocumentUtil() throws ParserConfigurationException{
+		this.factory = DocumentBuilderFactory.newInstance();
+		this.documentBuilder=factory.newDocumentBuilder();
+	}
+	
+	/**
+	 * Parse the file at the given path and return it as Document-Object
+	 * @param path Path of the file which should be parsed
+	 * @return Document-Object of the parsed file
+	 */
+	public Document getDocument(String path){	
+		try {
+			Document document = this.documentBuilder.parse(new File(path));
+			return document;
+		} catch (SAXException | IOException e) {
+			return null;
+		}
+	}
+	
+	/**
+	 * Saves given resource
+	 * @param resource Resource which should be saved
+	 * @return Success: Path of the saved resource. Error: Error message 
+	 */
+	public String saveResource(Resource resource){
+		try{
+			resource.save(Collections.EMPTY_MAP);
+			return resource.getURI().toString().replace("platform:/resource/org.eclipse.emf.henshin.text.transformation.tests/","");
+		}catch(IOException e){
+			return "Error! Can not save!";
+		}
+	}
+	
+
+}
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/bank/bank.ecore b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/bank/bank.ecore
new file mode 100644
index 0000000..b6320e4
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/bank/bank.ecore
@@ -0,0 +1,31 @@
+<?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="bank" nsURI="http://www.bank.com" nsPrefix="bank">
+  <eClassifiers xsi:type="ecore:EClass" name="Bank">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="managers" upperBound="-1"
+        eType="#//Manager" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="accounts" upperBound="-1"
+        eType="#//Account" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="clients" upperBound="-1"
+        eType="#//Client" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Client" eSuperTypes="#//Person">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="manager" eType="#//Manager"
+        eOpposite="#//Manager/clients"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="accounts" upperBound="-1"
+        eType="#//Account" eOpposite="#//Account/owner"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Manager" eSuperTypes="#//Person">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="clients" upperBound="-1"
+        eType="#//Client" eOpposite="#//Client/manager"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Person" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Account">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//Client"
+        eOpposite="#//Client/accounts"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="credit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/bank/bank.henshin b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/bank/bank.henshin
new file mode 100644
index 0000000..40ceb26
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/bank/bank.henshin
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module 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" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_XF6w8H_5EeKZZICbS5P5TQ" name="HenshinDSL" description="">
+  <imports href="bank.ecore#/"/>
+  <units xsi:type="henshin:Rule" xmi:id="_XF6w8X_5EeKZZICbS5P5TQ" name="createAccount">
+    <parameters xmi:id="_XF7_EH_5EeKZZICbS5P5TQ" name="client" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </parameters>
+    <parameters xmi:id="_XF7_EX_5EeKZZICbS5P5TQ" name="accountId" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <lhs xmi:id="_XGBeoH_5EeKZZICbS5P5TQ" name="createAccount_LHS">
+      <nodes xmi:id="_XGCFsH_5EeKZZICbS5P5TQ" name="bankNode" outgoing="_XGWOwX_5EeKZZICbS5P5TQ _XGW10H_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank"/>
+      </nodes>
+      <nodes xmi:id="_XGCFsX_5EeKZZICbS5P5TQ" name="clientNode" incoming="_XGWOwX_5EeKZZICbS5P5TQ _XGW10X_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Client"/>
+        <attributes xmi:id="_XGCswH_5EeKZZICbS5P5TQ" value="client">
+          <type href="bank.ecore#//Person/name"/>
+        </attributes>
+      </nodes>
+      <nodes xmi:id="_XGWOwH_5EeKZZICbS5P5TQ" name="managerNode" incoming="_XGW10H_5EeKZZICbS5P5TQ" outgoing="_XGW10X_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Manager"/>
+      </nodes>
+      <edges xmi:id="_XGWOwX_5EeKZZICbS5P5TQ" source="_XGCFsH_5EeKZZICbS5P5TQ" target="_XGCFsX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank/clients"/>
+      </edges>
+      <edges xmi:id="_XGW10H_5EeKZZICbS5P5TQ" source="_XGCFsH_5EeKZZICbS5P5TQ" target="_XGWOwH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank/managers"/>
+      </edges>
+      <edges xmi:id="_XGW10X_5EeKZZICbS5P5TQ" source="_XGWOwH_5EeKZZICbS5P5TQ" target="_XGCFsX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Manager/clients"/>
+      </edges>
+      <formula xsi:type="henshin:Not" xmi:id="_XGZ5IH_5EeKZZICbS5P5TQ">
+        <child xsi:type="henshin:NestedCondition" xmi:id="_XGagMH_5EeKZZICbS5P5TQ">
+          <conclusion xmi:id="_XGagMX_5EeKZZICbS5P5TQ" name="forbid">
+            <nodes xmi:id="_XGbHQH_5EeKZZICbS5P5TQ" name="forbidAccountNode" incoming="_XGbuUH_5EeKZZICbS5P5TQ">
+              <type href="bank.ecore#//Account"/>
+              <attributes xmi:id="_XGbHQX_5EeKZZICbS5P5TQ" value="accountId">
+                <type href="bank.ecore#//Account/id"/>
+              </attributes>
+            </nodes>
+            <nodes xmi:id="_XGagMn_5EeKZZICbS5P5TQ" name="bankNode" description="" outgoing="_XGbuUH_5EeKZZICbS5P5TQ">
+              <type href="bank.ecore#//Bank"/>
+            </nodes>
+            <edges xmi:id="_XGbuUH_5EeKZZICbS5P5TQ" source="_XGagMn_5EeKZZICbS5P5TQ" target="_XGbHQH_5EeKZZICbS5P5TQ">
+              <type href="bank.ecore#//Bank/accounts"/>
+            </edges>
+          </conclusion>
+          <mappings xmi:id="_XGcVYH_5EeKZZICbS5P5TQ" origin="_XGCFsH_5EeKZZICbS5P5TQ" image="_XGagMn_5EeKZZICbS5P5TQ"/>
+        </child>
+      </formula>
+    </lhs>
+    <rhs xmi:id="_XGcVYX_5EeKZZICbS5P5TQ" name="createAccount_RHS">
+      <nodes xmi:id="_XGf_wH_5EeKZZICbS5P5TQ" name="bankNode" description="" outgoing="_XGnUgX_5EeKZZICbS5P5TQ _XGn7kH_5EeKZZICbS5P5TQ _XGn7kX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank"/>
+      </nodes>
+      <nodes xmi:id="_XGmtcH_5EeKZZICbS5P5TQ" name="clientNode" incoming="_XGnUgX_5EeKZZICbS5P5TQ _XGoioX_5EeKZZICbS5P5TQ" outgoing="_XGoioH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Client"/>
+        <attributes xmi:id="_XGmtcX_5EeKZZICbS5P5TQ" value="client">
+          <type href="bank.ecore#//Person/name"/>
+        </attributes>
+      </nodes>
+      <nodes xmi:id="_XGnUgH_5EeKZZICbS5P5TQ" name="managerNode" incoming="_XGn7kH_5EeKZZICbS5P5TQ" outgoing="_XGoioX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Manager"/>
+      </nodes>
+      <nodes xmi:id="_XGgm0H_5EeKZZICbS5P5TQ" name="accountNode" description="" incoming="_XGn7kX_5EeKZZICbS5P5TQ _XGoioH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Account"/>
+        <attributes xmi:id="_XGhN4H_5EeKZZICbS5P5TQ" value="accountId">
+          <type href="bank.ecore#//Account/id"/>
+        </attributes>
+      </nodes>
+      <edges xmi:id="_XGnUgX_5EeKZZICbS5P5TQ" source="_XGf_wH_5EeKZZICbS5P5TQ" target="_XGmtcH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank/clients"/>
+      </edges>
+      <edges xmi:id="_XGn7kH_5EeKZZICbS5P5TQ" source="_XGf_wH_5EeKZZICbS5P5TQ" target="_XGnUgH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank/managers"/>
+      </edges>
+      <edges xmi:id="_XGoioX_5EeKZZICbS5P5TQ" source="_XGnUgH_5EeKZZICbS5P5TQ" target="_XGmtcH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Manager/clients"/>
+      </edges>
+      <edges xmi:id="_XGn7kX_5EeKZZICbS5P5TQ" source="_XGf_wH_5EeKZZICbS5P5TQ" target="_XGgm0H_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank/accounts"/>
+      </edges>
+      <edges xmi:id="_XGoioH_5EeKZZICbS5P5TQ" source="_XGmtcH_5EeKZZICbS5P5TQ" target="_XGgm0H_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Client/accounts"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_XGpJsH_5EeKZZICbS5P5TQ" origin="_XGCFsH_5EeKZZICbS5P5TQ" image="_XGf_wH_5EeKZZICbS5P5TQ"/>
+    <mappings xmi:id="_XGpJsX_5EeKZZICbS5P5TQ" origin="_XGCFsX_5EeKZZICbS5P5TQ" image="_XGmtcH_5EeKZZICbS5P5TQ"/>
+    <mappings xmi:id="_XGpJsn_5EeKZZICbS5P5TQ" origin="_XGWOwH_5EeKZZICbS5P5TQ" image="_XGnUgH_5EeKZZICbS5P5TQ"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_XGpwwH_5EeKZZICbS5P5TQ" name="transferMoney">
+    <parameters xmi:id="_XGpwwX_5EeKZZICbS5P5TQ" name="client" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </parameters>
+    <parameters xmi:id="_XGpwwn_5EeKZZICbS5P5TQ" name="fromId" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_XGqX0H_5EeKZZICbS5P5TQ" name="toId" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_XGqX0X_5EeKZZICbS5P5TQ" name="amount" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    </parameters>
+    <parameters xmi:id="_XGq-4H_5EeKZZICbS5P5TQ" name="x" kind="VAR">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    </parameters>
+    <parameters xmi:id="_XGq-4X_5EeKZZICbS5P5TQ" name="y" kind="VAR">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    </parameters>
+    <lhs xmi:id="_XGrl8H_5EeKZZICbS5P5TQ" name="transferMoney_LHS">
+      <nodes xmi:id="_XGrl8X_5EeKZZICbS5P5TQ" name="xAccountNode" incoming="_XG1-AX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Account"/>
+        <attributes xmi:id="_XGrl8n_5EeKZZICbS5P5TQ" value="fromId">
+          <type href="bank.ecore#//Account/id"/>
+        </attributes>
+        <attributes xmi:id="_XGsNAH_5EeKZZICbS5P5TQ" value="x">
+          <type href="bank.ecore#//Account/credit"/>
+        </attributes>
+      </nodes>
+      <nodes xmi:id="_XGs0EH_5EeKZZICbS5P5TQ" name="yAccountNode">
+        <type href="bank.ecore#//Account"/>
+        <attributes xmi:id="_XGs0EX_5EeKZZICbS5P5TQ" value="toId">
+          <type href="bank.ecore#//Account/id"/>
+        </attributes>
+        <attributes xmi:id="_XG0v4H_5EeKZZICbS5P5TQ" value="y">
+          <type href="bank.ecore#//Account/credit"/>
+        </attributes>
+      </nodes>
+      <nodes xmi:id="_XG1W8H_5EeKZZICbS5P5TQ" name="clientNode" outgoing="_XG1-AX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Client"/>
+        <attributes xmi:id="_XG1-AH_5EeKZZICbS5P5TQ" value="client">
+          <type href="bank.ecore#//Person/name"/>
+        </attributes>
+      </nodes>
+      <edges xmi:id="_XG1-AX_5EeKZZICbS5P5TQ" source="_XG1W8H_5EeKZZICbS5P5TQ" target="_XGrl8X_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Client/accounts"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_XG2lEH_5EeKZZICbS5P5TQ" name="transferMoney_RHS">
+      <nodes xmi:id="_XG2lEX_5EeKZZICbS5P5TQ" name="xAccountNode" description="" incoming="_XG_vAH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Account"/>
+        <attributes xmi:id="_XG2lEn_5EeKZZICbS5P5TQ" value="fromId">
+          <type href="bank.ecore#//Account/id"/>
+        </attributes>
+        <attributes xmi:id="_XG3MIH_5EeKZZICbS5P5TQ" value="x-amount">
+          <type href="bank.ecore#//Account/credit"/>
+        </attributes>
+      </nodes>
+      <nodes xmi:id="_XG3zMH_5EeKZZICbS5P5TQ" name="yAccountNode">
+        <type href="bank.ecore#//Account"/>
+        <attributes xmi:id="_XG3zMX_5EeKZZICbS5P5TQ" value="toId">
+          <type href="bank.ecore#//Account/id"/>
+        </attributes>
+        <attributes xmi:id="_XG4aQH_5EeKZZICbS5P5TQ" value="y+amount">
+          <type href="bank.ecore#//Account/credit"/>
+        </attributes>
+      </nodes>
+      <nodes xmi:id="_XG-g4H_5EeKZZICbS5P5TQ" name="clientNode" outgoing="_XG_vAH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Client"/>
+        <attributes xmi:id="_XG_H8H_5EeKZZICbS5P5TQ" value="client">
+          <type href="bank.ecore#//Person/name"/>
+        </attributes>
+      </nodes>
+      <edges xmi:id="_XG_vAH_5EeKZZICbS5P5TQ" source="_XG-g4H_5EeKZZICbS5P5TQ" target="_XG2lEX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Client/accounts"/>
+      </edges>
+    </rhs>
+    <attributeConditions xmi:id="_kkKAYGwLEeW5Br8zt3c4Qg" name="" conditionText="x>amount"/>
+    <attributeConditions xmi:id="_89rI8GwLEeW5Br8zt3c4Qg" name="" conditionText="amount>0"/>
+    <mappings xmi:id="_XG_vAX_5EeKZZICbS5P5TQ" origin="_XGrl8X_5EeKZZICbS5P5TQ" image="_XG2lEX_5EeKZZICbS5P5TQ"/>
+    <mappings xmi:id="_XG_vAn_5EeKZZICbS5P5TQ" origin="_XGs0EH_5EeKZZICbS5P5TQ" image="_XG3zMH_5EeKZZICbS5P5TQ"/>
+    <mappings xmi:id="_XHAWEH_5EeKZZICbS5P5TQ" origin="_XG1W8H_5EeKZZICbS5P5TQ" image="_XG-g4H_5EeKZZICbS5P5TQ"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_XHAWEX_5EeKZZICbS5P5TQ" name="deleteAllAccounts" checkDangling="false">
+    <parameters xmi:id="_XHAWEn_5EeKZZICbS5P5TQ" name="client" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </parameters>
+    <lhs xmi:id="_XHAWE3_5EeKZZICbS5P5TQ" name="deleteAllAccounts_LHS">
+      <nodes xmi:id="_XHA9IH_5EeKZZICbS5P5TQ" name="clientNode" incoming="_XHCLQX_5EeKZZICbS5P5TQ _XHCyUH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Client"/>
+        <attributes xmi:id="_XHA9IX_5EeKZZICbS5P5TQ" value="client">
+          <type href="bank.ecore#//Person/name"/>
+        </attributes>
+      </nodes>
+      <nodes xmi:id="_XHBkMH_5EeKZZICbS5P5TQ" name="bankNode" outgoing="_XHCLQH_5EeKZZICbS5P5TQ _XHCLQX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank"/>
+      </nodes>
+      <nodes xmi:id="_XHBkMX_5EeKZZICbS5P5TQ" name="managerNode" incoming="_XHCLQH_5EeKZZICbS5P5TQ" outgoing="_XHCyUH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Manager"/>
+      </nodes>
+      <edges xmi:id="_XHCLQH_5EeKZZICbS5P5TQ" source="_XHBkMH_5EeKZZICbS5P5TQ" target="_XHBkMX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank/managers"/>
+      </edges>
+      <edges xmi:id="_XHCLQX_5EeKZZICbS5P5TQ" source="_XHBkMH_5EeKZZICbS5P5TQ" target="_XHA9IH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank/clients"/>
+      </edges>
+      <edges xmi:id="_XHCyUH_5EeKZZICbS5P5TQ" source="_XHBkMX_5EeKZZICbS5P5TQ" target="_XHA9IH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Manager/clients"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_XHCyUX_5EeKZZICbS5P5TQ" name="deleteAllAccounts_RHS">
+      <nodes xmi:id="_XHDZYH_5EeKZZICbS5P5TQ" name="clientNode" incoming="_XHEngX_5EeKZZICbS5P5TQ _XHFOkH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Client"/>
+        <attributes xmi:id="_XHDZYX_5EeKZZICbS5P5TQ" value="client">
+          <type href="bank.ecore#//Person/name"/>
+        </attributes>
+      </nodes>
+      <nodes xmi:id="_XHEAcH_5EeKZZICbS5P5TQ" name="bankNode" outgoing="_XHEngH_5EeKZZICbS5P5TQ _XHEngX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank"/>
+      </nodes>
+      <nodes xmi:id="_XHEAcX_5EeKZZICbS5P5TQ" name="managerNode" incoming="_XHEngH_5EeKZZICbS5P5TQ" outgoing="_XHFOkH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Manager"/>
+      </nodes>
+      <edges xmi:id="_XHEngH_5EeKZZICbS5P5TQ" source="_XHEAcH_5EeKZZICbS5P5TQ" target="_XHEAcX_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank/managers"/>
+      </edges>
+      <edges xmi:id="_XHEngX_5EeKZZICbS5P5TQ" source="_XHEAcH_5EeKZZICbS5P5TQ" target="_XHDZYH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Bank/clients"/>
+      </edges>
+      <edges xmi:id="_XHFOkH_5EeKZZICbS5P5TQ" source="_XHEAcX_5EeKZZICbS5P5TQ" target="_XHDZYH_5EeKZZICbS5P5TQ">
+        <type href="bank.ecore#//Manager/clients"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_XHFOkX_5EeKZZICbS5P5TQ" origin="_XHA9IH_5EeKZZICbS5P5TQ" image="_XHDZYH_5EeKZZICbS5P5TQ"/>
+    <mappings xmi:id="_XHFOkn_5EeKZZICbS5P5TQ" origin="_XHBkMH_5EeKZZICbS5P5TQ" image="_XHEAcH_5EeKZZICbS5P5TQ"/>
+    <mappings xmi:id="_XHF1oH_5EeKZZICbS5P5TQ" origin="_XHBkMX_5EeKZZICbS5P5TQ" image="_XHEAcX_5EeKZZICbS5P5TQ"/>
+    <multiRules xmi:id="_XHKuIH_5EeKZZICbS5P5TQ" name="deleteAccount">
+      <parameters xmi:id="_hDQQsHcoEeWYVP_eitzqMg" name="client" kind="IN">
+        <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      </parameters>
+      <lhs xmi:id="_XHKuIX_5EeKZZICbS5P5TQ" name="deleteAccount_LHS">
+        <nodes xmi:id="_XHMjUH_5EeKZZICbS5P5TQ" name="accountNode" incoming="_XHNxcX_5EeKZZICbS5P5TQ" outgoing="_XHOYgH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Account"/>
+        </nodes>
+        <nodes xmi:id="_XHLVMH_5EeKZZICbS5P5TQ" name="clientNode" incoming="_XHMjUX_5EeKZZICbS5P5TQ _XHNKYH_5EeKZZICbS5P5TQ _XHOYgH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Client"/>
+        </nodes>
+        <nodes xmi:id="_XHLVMX_5EeKZZICbS5P5TQ" name="bankNode" outgoing="_XHNKYX_5EeKZZICbS5P5TQ _XHMjUX_5EeKZZICbS5P5TQ _XHNxcX_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Bank"/>
+        </nodes>
+        <nodes xmi:id="_XHL8QH_5EeKZZICbS5P5TQ" name="managerNode" incoming="_XHNKYX_5EeKZZICbS5P5TQ" outgoing="_XHNKYH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Manager"/>
+        </nodes>
+        <edges xmi:id="_XHNKYX_5EeKZZICbS5P5TQ" source="_XHLVMX_5EeKZZICbS5P5TQ" target="_XHL8QH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Bank/managers"/>
+        </edges>
+        <edges xmi:id="_XHMjUX_5EeKZZICbS5P5TQ" source="_XHLVMX_5EeKZZICbS5P5TQ" target="_XHLVMH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Bank/clients"/>
+        </edges>
+        <edges xmi:id="_XHNKYH_5EeKZZICbS5P5TQ" source="_XHL8QH_5EeKZZICbS5P5TQ" target="_XHLVMH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Manager/clients"/>
+        </edges>
+        <edges xmi:id="_XHNxcX_5EeKZZICbS5P5TQ" source="_XHLVMX_5EeKZZICbS5P5TQ" target="_XHMjUH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Bank/accounts"/>
+        </edges>
+        <edges xmi:id="_XHOYgH_5EeKZZICbS5P5TQ" source="_XHMjUH_5EeKZZICbS5P5TQ" target="_XHLVMH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Account/owner"/>
+        </edges>
+      </lhs>
+      <rhs xmi:id="_XHOYgX_5EeKZZICbS5P5TQ" name="deleteAccount_RHS">
+        <nodes xmi:id="_XHOYgn_5EeKZZICbS5P5TQ" name="clientNode" incoming="_XHPmoX_5EeKZZICbS5P5TQ _XHQNsH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Client"/>
+        </nodes>
+        <nodes xmi:id="_XHO_kH_5EeKZZICbS5P5TQ" name="bankNode" outgoing="_XHQNsX_5EeKZZICbS5P5TQ _XHPmoX_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Bank"/>
+        </nodes>
+        <nodes xmi:id="_XHPmoH_5EeKZZICbS5P5TQ" name="managerNode" incoming="_XHQNsX_5EeKZZICbS5P5TQ" outgoing="_XHQNsH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Manager"/>
+        </nodes>
+        <edges xmi:id="_XHQNsX_5EeKZZICbS5P5TQ" source="_XHO_kH_5EeKZZICbS5P5TQ" target="_XHPmoH_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Bank/managers"/>
+        </edges>
+        <edges xmi:id="_XHPmoX_5EeKZZICbS5P5TQ" source="_XHO_kH_5EeKZZICbS5P5TQ" target="_XHOYgn_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Bank/clients"/>
+        </edges>
+        <edges xmi:id="_XHQNsH_5EeKZZICbS5P5TQ" source="_XHPmoH_5EeKZZICbS5P5TQ" target="_XHOYgn_5EeKZZICbS5P5TQ">
+          <type href="bank.ecore#//Manager/clients"/>
+        </edges>
+      </rhs>
+      <mappings xmi:id="_XHQ0wH_5EeKZZICbS5P5TQ" origin="_XHLVMH_5EeKZZICbS5P5TQ" image="_XHOYgn_5EeKZZICbS5P5TQ"/>
+      <mappings xmi:id="_XHQ0wX_5EeKZZICbS5P5TQ" origin="_XHLVMX_5EeKZZICbS5P5TQ" image="_XHO_kH_5EeKZZICbS5P5TQ"/>
+      <mappings xmi:id="_XHQ0wn_5EeKZZICbS5P5TQ" origin="_XHL8QH_5EeKZZICbS5P5TQ" image="_XHPmoH_5EeKZZICbS5P5TQ"/>
+      <multiMappings xmi:id="_XHRb0H_5EeKZZICbS5P5TQ" origin="_XHA9IH_5EeKZZICbS5P5TQ" image="_XHLVMH_5EeKZZICbS5P5TQ"/>
+      <multiMappings xmi:id="_XHRb0X_5EeKZZICbS5P5TQ" origin="_XHBkMH_5EeKZZICbS5P5TQ" image="_XHLVMX_5EeKZZICbS5P5TQ"/>
+      <multiMappings xmi:id="_XHRb0n_5EeKZZICbS5P5TQ" origin="_XHBkMX_5EeKZZICbS5P5TQ" image="_XHL8QH_5EeKZZICbS5P5TQ"/>
+      <multiMappings xmi:id="_XHRb03_5EeKZZICbS5P5TQ" origin="_XHDZYH_5EeKZZICbS5P5TQ" image="_XHOYgn_5EeKZZICbS5P5TQ"/>
+      <multiMappings xmi:id="_XHSC4H_5EeKZZICbS5P5TQ" origin="_XHEAcH_5EeKZZICbS5P5TQ" image="_XHO_kH_5EeKZZICbS5P5TQ"/>
+      <multiMappings xmi:id="_XHZXoH_5EeKZZICbS5P5TQ" origin="_XHEAcX_5EeKZZICbS5P5TQ" image="_XHPmoH_5EeKZZICbS5P5TQ"/>
+    </multiRules>
+  </units>
+</henshin:Module>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/bank/bank.henshin_text b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/bank/bank.henshin_text
new file mode 100644
index 0000000..03a70a6
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/bank/bank.henshin_text
@@ -0,0 +1,73 @@
+ePackageImport bank
+
+rule createAccount(IN client:EString, IN accountId:EInt){
+	graph{
+		node bankNode:Bank
+		node clientNode:Client{
+			name=client
+		}
+		node managerNode:Manager
+		forbid node forbidAccountNode:Account{
+			id=accountId
+		}
+		create node accountNode:Account{
+			id=accountId
+		}
+		edges[
+			(bankNode->clientNode:clients),
+			(bankNode->managerNode:managers),
+			(managerNode->clientNode:clients),
+			(forbid bankNode->forbidAccountNode:accounts),
+			(create bankNode->accountNode:accounts),
+			(create clientNode->accountNode:accounts)
+		]
+	}
+}
+	
+rule transferMoney(IN client:EString, IN fromId:EInt, IN toId:EInt, IN amount:EDouble, VAR x:EDouble, VAR y:EDouble){
+	conditions[x>amount,amount>0]
+	graph{
+		node xAccountNode:Account{
+			id=fromId
+			credit=x
+			set credit=x-amount
+		}
+		node yAccountNode:Account{
+			id=toId
+			credit=y
+			set credit=y+amount
+		}
+		node clientNode:Client{
+			name=client
+		}
+		edges[
+			(clientNode->xAccountNode:accounts)
+		]
+	}
+}
+
+rule deleteAllAccounts(IN client:EString){
+	checkDangling false
+	graph{
+		node clientNode:Client{
+			name=client
+		}
+		node bankNode:Bank
+		node managerNode:Manager
+		edges[
+			(bankNode->managerNode:managers),
+			(bankNode->clientNode:clients),
+			(managerNode->clientNode:clients)
+		]
+		multiRule deleteAccount{
+			graph{
+				delete node accountNode:Account
+				edges[
+					(delete bankNode->accountNode:accounts),
+					(delete accountNode->clientNode:owner)
+				]
+			}
+		}
+		
+	}
+}
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full/grid-full.henshin b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full/grid-full.henshin
new file mode 100644
index 0000000..fc0e04b
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full/grid-full.henshin
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module 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" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_op50IKopEeGlvMpQNzqMMA" name="HenshinDSL">
+  <imports href="grid.ecore#/"/>
+  <units xsi:type="henshin:Rule" xmi:id="_Cpq9QKo0EeGWmNM0TiX1dQ" name="initGrid">
+    <parameters xmi:id="_yRymQLcgEeGQre7dAX2kZQ" name="grid" kind="OUT">
+      <type xsi:type="ecore:EClass" href="grid.ecore#//Grid"/>
+    </parameters>
+    <lhs xmi:id="_Cpq9Qao0EeGWmNM0TiX1dQ" name="initGrid_LHS"/>
+    <rhs xmi:id="_Cpq9Qqo0EeGWmNM0TiX1dQ" name="initGrid_RHS">
+      <nodes xmi:id="_dZw7oKo0EeGWmNM0TiX1dQ" name="first" incoming="_de7xcLcXEeGQre7dAX2kZQ" outgoing="_ezn6oKptEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_ducLIKo0EeGWmNM0TiX1dQ" name="second" incoming="_ezn6oKptEeGWmNM0TiX1dQ _eRvHYLcXEeGQre7dAX2kZQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_b-vKALcXEeGQre7dAX2kZQ" name="grid" outgoing="_de7xcLcXEeGQre7dAX2kZQ _eRvHYLcXEeGQre7dAX2kZQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <edges xmi:id="_ezn6oKptEeGWmNM0TiX1dQ" source="_dZw7oKo0EeGWmNM0TiX1dQ" target="_ducLIKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+      <edges xmi:id="_de7xcLcXEeGQre7dAX2kZQ" source="_b-vKALcXEeGQre7dAX2kZQ" target="_dZw7oKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_eRvHYLcXEeGQre7dAX2kZQ" source="_b-vKALcXEeGQre7dAX2kZQ" target="_ducLIKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+    </rhs>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_sHWKYKo0EeGWmNM0TiX1dQ" name="startNextColumn">
+    <lhs xmi:id="_sHWKYao0EeGWmNM0TiX1dQ" name="startNextColumn_LHS">
+      <nodes xmi:id="_x9Nxkao0EeGWmNM0TiX1dQ" name="root" outgoing="_x9XikKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_vSa_QKo0EeGWmNM0TiX1dQ" name="unnamed" incoming="_x9XikKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_x9XikKo0EeGWmNM0TiX1dQ" source="_x9Nxkao0EeGWmNM0TiX1dQ" target="_vSa_QKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <formula xsi:type="henshin:And" xmi:id="_O7GfILcYEeGQre7dAX2kZQ">
+        <left xsi:type="henshin:Not" xmi:id="_Lka3MbcYEeGQre7dAX2kZQ">
+          <child xsi:type="henshin:NestedCondition" xmi:id="_Lka3MrcYEeGQre7dAX2kZQ">
+            <conclusion xmi:id="_Lka3M7cYEeGQre7dAX2kZQ" name="graph1">
+              <nodes xmi:id="_IHA8MLcYEeGQre7dAX2kZQ" name="forbidNode" incoming="_Jd6dsLcYEeGQre7dAX2kZQ" outgoing="_KkUFELcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node"/>
+              </nodes>
+              <nodes xmi:id="_LkizALcYEeGQre7dAX2kZQ" name="root" outgoing="_Jd6dsLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Grid"/>
+              </nodes>
+              <nodes xmi:id="_Lk-34LcYEeGQre7dAX2kZQ" name="unnamed" incoming="_KkUFELcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node"/>
+              </nodes>
+              <edges xmi:id="_Jd6dsLcYEeGQre7dAX2kZQ" source="_LkizALcYEeGQre7dAX2kZQ" target="_IHA8MLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Grid/nodes"/>
+              </edges>
+              <edges xmi:id="_KkUFELcYEeGQre7dAX2kZQ" source="_IHA8MLcYEeGQre7dAX2kZQ" target="_Lk-34LcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node/ver"/>
+              </edges>
+            </conclusion>
+            <mappings xmi:id="_LkizAbcYEeGQre7dAX2kZQ" origin="_x9Nxkao0EeGWmNM0TiX1dQ" image="_LkizALcYEeGQre7dAX2kZQ"/>
+            <mappings xmi:id="_Lk-34bcYEeGQre7dAX2kZQ" origin="_vSa_QKo0EeGWmNM0TiX1dQ" image="_Lk-34LcYEeGQre7dAX2kZQ"/>
+          </child>
+        </left>
+        <right xsi:type="henshin:Not" xmi:id="_O7GfIbcYEeGQre7dAX2kZQ">
+          <child xsi:type="henshin:NestedCondition" xmi:id="_O7GfIrcYEeGQre7dAX2kZQ">
+            <conclusion xmi:id="_O7GfI7cYEeGQre7dAX2kZQ" name="graph2">
+              <nodes xmi:id="_N9MFYLcYEeGQre7dAX2kZQ" name="forbidNode" incoming="_O4t5gLcYEeGQre7dAX2kZQ _P0pWQLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node"/>
+              </nodes>
+              <nodes xmi:id="_O7Oa8LcYEeGQre7dAX2kZQ" name="root" outgoing="_O4t5gLcYEeGQre7dAX2kZQ _P0m6ALcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Grid"/>
+              </nodes>
+              <nodes xmi:id="_P0iBgLcYEeGQre7dAX2kZQ" name="unnamed" incoming="_P0m6ALcYEeGQre7dAX2kZQ" outgoing="_P0pWQLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node"/>
+              </nodes>
+              <edges xmi:id="_O4t5gLcYEeGQre7dAX2kZQ" source="_O7Oa8LcYEeGQre7dAX2kZQ" target="_N9MFYLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Grid/nodes"/>
+              </edges>
+              <edges xmi:id="_P0pWQLcYEeGQre7dAX2kZQ" source="_P0iBgLcYEeGQre7dAX2kZQ" target="_N9MFYLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node/hor"/>
+              </edges>
+              <edges xmi:id="_P0m6ALcYEeGQre7dAX2kZQ" source="_O7Oa8LcYEeGQre7dAX2kZQ" target="_P0iBgLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Grid/nodes"/>
+              </edges>
+            </conclusion>
+            <mappings xmi:id="_O7Oa8bcYEeGQre7dAX2kZQ" origin="_x9Nxkao0EeGWmNM0TiX1dQ" image="_O7Oa8LcYEeGQre7dAX2kZQ"/>
+            <mappings xmi:id="_P0j2sLcYEeGQre7dAX2kZQ" origin="_vSa_QKo0EeGWmNM0TiX1dQ" image="_P0iBgLcYEeGQre7dAX2kZQ"/>
+          </child>
+        </right>
+      </formula>
+    </lhs>
+    <rhs xmi:id="_sHWKYqo0EeGWmNM0TiX1dQ" name="startNextColumn_RHS">
+      <nodes xmi:id="_x9Nxkqo0EeGWmNM0TiX1dQ" name="root" outgoing="_x9Xikao0EeGWmNM0TiX1dQ _x9Xikqo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_vSa_Qao0EeGWmNM0TiX1dQ" name="unnamed" incoming="_x9Xikao0EeGWmNM0TiX1dQ" outgoing="_5F8u0Ko0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_vu-_cKo0EeGWmNM0TiX1dQ" name="newNode" incoming="_x9Xikqo0EeGWmNM0TiX1dQ _5F8u0Ko0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_x9Xikao0EeGWmNM0TiX1dQ" source="_x9Nxkqo0EeGWmNM0TiX1dQ" target="_vSa_Qao0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_x9Xikqo0EeGWmNM0TiX1dQ" source="_x9Nxkqo0EeGWmNM0TiX1dQ" target="_vu-_cKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_5F8u0Ko0EeGWmNM0TiX1dQ" source="_vSa_Qao0EeGWmNM0TiX1dQ" target="_vu-_cKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/hor"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_x9Nxk6o0EeGWmNM0TiX1dQ" origin="_x9Nxkao0EeGWmNM0TiX1dQ" image="_x9Nxkqo0EeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_vSa_Qqo0EeGWmNM0TiX1dQ" origin="_vSa_QKo0EeGWmNM0TiX1dQ" image="_vSa_Qao0EeGWmNM0TiX1dQ"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_IddhAKpZEeGWmNM0TiX1dQ" name="extendFirstColumn">
+    <lhs xmi:id="_IddhAapZEeGWmNM0TiX1dQ" name="extendFirstColumn_LHS">
+      <nodes xmi:id="_MOh-4apZEeGWmNM0TiX1dQ" name="root" outgoing="_NXpjEKpZEeGWmNM0TiX1dQ _NyRpkKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_NXo8AKpZEeGWmNM0TiX1dQ" name="first" incoming="_NXpjEKpZEeGWmNM0TiX1dQ" outgoing="_T2X6AKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_NyRCgKpZEeGWmNM0TiX1dQ" name="second" incoming="_NyRpkKpZEeGWmNM0TiX1dQ _T2X6AKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_NXpjEKpZEeGWmNM0TiX1dQ" source="_MOh-4apZEeGWmNM0TiX1dQ" target="_NXo8AKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_NyRpkKpZEeGWmNM0TiX1dQ" source="_MOh-4apZEeGWmNM0TiX1dQ" target="_NyRCgKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_T2X6AKpZEeGWmNM0TiX1dQ" source="_NXo8AKpZEeGWmNM0TiX1dQ" target="_NyRCgKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_IddhAqpZEeGWmNM0TiX1dQ" name="extendFirstColumn_RHS">
+      <nodes xmi:id="_MOil8KpZEeGWmNM0TiX1dQ" name="root" outgoing="_NXpjEapZEeGWmNM0TiX1dQ _NyRpkapZEeGWmNM0TiX1dQ _WQiPUKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_NXo8AapZEeGWmNM0TiX1dQ" name="first" incoming="_NXpjEapZEeGWmNM0TiX1dQ" outgoing="_XVMKQKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_NyRCgapZEeGWmNM0TiX1dQ" name="second" incoming="_NyRpkapZEeGWmNM0TiX1dQ _X1RYgKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_WQgaIKpZEeGWmNM0TiX1dQ" name="newNode" incoming="_WQiPUKpZEeGWmNM0TiX1dQ _XVMKQKpZEeGWmNM0TiX1dQ" outgoing="_X1RYgKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_NXpjEapZEeGWmNM0TiX1dQ" source="_MOil8KpZEeGWmNM0TiX1dQ" target="_NXo8AapZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_NyRpkapZEeGWmNM0TiX1dQ" source="_MOil8KpZEeGWmNM0TiX1dQ" target="_NyRCgapZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_WQiPUKpZEeGWmNM0TiX1dQ" source="_MOil8KpZEeGWmNM0TiX1dQ" target="_WQgaIKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_XVMKQKpZEeGWmNM0TiX1dQ" source="_NXo8AapZEeGWmNM0TiX1dQ" target="_WQgaIKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+      <edges xmi:id="_X1RYgKpZEeGWmNM0TiX1dQ" source="_WQgaIKpZEeGWmNM0TiX1dQ" target="_NyRCgapZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_MOil8apZEeGWmNM0TiX1dQ" origin="_MOh-4apZEeGWmNM0TiX1dQ" image="_MOil8KpZEeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_NXo8AqpZEeGWmNM0TiX1dQ" origin="_NXo8AKpZEeGWmNM0TiX1dQ" image="_NXo8AapZEeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_NyRCgqpZEeGWmNM0TiX1dQ" origin="_NyRCgKpZEeGWmNM0TiX1dQ" image="_NyRCgapZEeGWmNM0TiX1dQ"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_lOp0cKpZEeGWmNM0TiX1dQ" name="extendNextColumn">
+    <lhs xmi:id="_lOp0capZEeGWmNM0TiX1dQ" name="extendNextColumn_LHS">
+      <nodes xmi:id="_pbSM8apZEeGWmNM0TiX1dQ" name="root" outgoing="_qryykKpZEeGWmNM0TiX1dQ _q5ScAKpZEeGWmNM0TiX1dQ _rcKfkKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_qrxkcKpZEeGWmNM0TiX1dQ" name="first" incoming="_qryykKpZEeGWmNM0TiX1dQ" outgoing="_r-nsYKpZEeGWmNM0TiX1dQ _sZfDcKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_q5R08KpZEeGWmNM0TiX1dQ" name="second" incoming="_q5ScAKpZEeGWmNM0TiX1dQ _sZfDcKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_rcJRcKpZEeGWmNM0TiX1dQ" name="third" incoming="_rcKfkKpZEeGWmNM0TiX1dQ _r-nsYKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_qryykKpZEeGWmNM0TiX1dQ" source="_pbSM8apZEeGWmNM0TiX1dQ" target="_qrxkcKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_q5ScAKpZEeGWmNM0TiX1dQ" source="_pbSM8apZEeGWmNM0TiX1dQ" target="_q5R08KpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_rcKfkKpZEeGWmNM0TiX1dQ" source="_pbSM8apZEeGWmNM0TiX1dQ" target="_rcJRcKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_r-nsYKpZEeGWmNM0TiX1dQ" source="_qrxkcKpZEeGWmNM0TiX1dQ" target="_rcJRcKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/hor"/>
+      </edges>
+      <edges xmi:id="_sZfDcKpZEeGWmNM0TiX1dQ" source="_qrxkcKpZEeGWmNM0TiX1dQ" target="_q5R08KpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+      <formula xsi:type="henshin:Not" xmi:id="_Wrk-YfjuEeGdld1gVIPz9w">
+        <child xsi:type="henshin:NestedCondition" xmi:id="_Wrk-YvjuEeGdld1gVIPz9w">
+          <conclusion xmi:id="_Wrk-Y_juEeGdld1gVIPz9w" name="forbid">
+            <nodes xmi:id="_xcRn4KpZEeGWmNM0TiX1dQ" name="forbidNode" incoming="_xcTdEKpZEeGWmNM0TiX1dQ _x4XG8KpZEeGWmNM0TiX1dQ _HLfmwKrxEeGrSuUOoDQ5Sw">
+              <type href="grid.ecore#//Node"/>
+            </nodes>
+            <nodes xmi:id="_Wrqd8PjuEeGdld1gVIPz9w" name="root" outgoing="_xcTdEKpZEeGWmNM0TiX1dQ">
+              <type href="grid.ecore#//Grid"/>
+            </nodes>
+            <nodes xmi:id="_Wr-nAPjuEeGdld1gVIPz9w" name="third" outgoing="_x4XG8KpZEeGWmNM0TiX1dQ">
+              <type href="grid.ecore#//Node"/>
+            </nodes>
+            <nodes xmi:id="_WsTXIPjuEeGdld1gVIPz9w" name="second" outgoing="_HLfmwKrxEeGrSuUOoDQ5Sw">
+              <type href="grid.ecore#//Node"/>
+            </nodes>
+            <edges xmi:id="_xcTdEKpZEeGWmNM0TiX1dQ" source="_Wrqd8PjuEeGdld1gVIPz9w" target="_xcRn4KpZEeGWmNM0TiX1dQ">
+              <type href="grid.ecore#//Grid/nodes"/>
+            </edges>
+            <edges xmi:id="_x4XG8KpZEeGWmNM0TiX1dQ" source="_Wr-nAPjuEeGdld1gVIPz9w" target="_xcRn4KpZEeGWmNM0TiX1dQ">
+              <type href="grid.ecore#//Node/ver"/>
+            </edges>
+            <edges xmi:id="_HLfmwKrxEeGrSuUOoDQ5Sw" source="_WsTXIPjuEeGdld1gVIPz9w" target="_xcRn4KpZEeGWmNM0TiX1dQ">
+              <type href="grid.ecore#//Node/hor"/>
+            </edges>
+          </conclusion>
+          <mappings xmi:id="_Wrqd8fjuEeGdld1gVIPz9w" origin="_pbSM8apZEeGWmNM0TiX1dQ" image="_Wrqd8PjuEeGdld1gVIPz9w"/>
+          <mappings xmi:id="_Wr-nAfjuEeGdld1gVIPz9w" origin="_rcJRcKpZEeGWmNM0TiX1dQ" image="_Wr-nAPjuEeGdld1gVIPz9w"/>
+          <mappings xmi:id="_WsTXIfjuEeGdld1gVIPz9w" origin="_q5R08KpZEeGWmNM0TiX1dQ" image="_WsTXIPjuEeGdld1gVIPz9w"/>
+        </child>
+      </formula>
+    </lhs>
+    <rhs xmi:id="_lOp0cqpZEeGWmNM0TiX1dQ" name="extendNextColumn_RHS">
+      <nodes xmi:id="_pbS0AKpZEeGWmNM0TiX1dQ" name="root" outgoing="_qrzZoKpZEeGWmNM0TiX1dQ _q5TDEKpZEeGWmNM0TiX1dQ _rcLGoKpZEeGWmNM0TiX1dQ _1rFKoKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_qrxkcapZEeGWmNM0TiX1dQ" name="first" incoming="_qrzZoKpZEeGWmNM0TiX1dQ" outgoing="_r-oTcKpZEeGWmNM0TiX1dQ _sZgRkKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_q5R08apZEeGWmNM0TiX1dQ" name="second" incoming="_q5TDEKpZEeGWmNM0TiX1dQ _sZgRkKpZEeGWmNM0TiX1dQ" outgoing="_3OoBAKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_rcJ4gKpZEeGWmNM0TiX1dQ" name="third" incoming="_rcLGoKpZEeGWmNM0TiX1dQ _r-oTcKpZEeGWmNM0TiX1dQ" outgoing="_2naQAKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_1rCuYKpZEeGWmNM0TiX1dQ" name="newNode" incoming="_1rFKoKpZEeGWmNM0TiX1dQ _2naQAKpZEeGWmNM0TiX1dQ _3OoBAKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_qrzZoKpZEeGWmNM0TiX1dQ" source="_pbS0AKpZEeGWmNM0TiX1dQ" target="_qrxkcapZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_q5TDEKpZEeGWmNM0TiX1dQ" source="_pbS0AKpZEeGWmNM0TiX1dQ" target="_q5R08apZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_rcLGoKpZEeGWmNM0TiX1dQ" source="_pbS0AKpZEeGWmNM0TiX1dQ" target="_rcJ4gKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_r-oTcKpZEeGWmNM0TiX1dQ" source="_qrxkcapZEeGWmNM0TiX1dQ" target="_rcJ4gKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/hor"/>
+      </edges>
+      <edges xmi:id="_sZgRkKpZEeGWmNM0TiX1dQ" source="_qrxkcapZEeGWmNM0TiX1dQ" target="_q5R08apZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+      <edges xmi:id="_1rFKoKpZEeGWmNM0TiX1dQ" source="_pbS0AKpZEeGWmNM0TiX1dQ" target="_1rCuYKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_2naQAKpZEeGWmNM0TiX1dQ" source="_rcJ4gKpZEeGWmNM0TiX1dQ" target="_1rCuYKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+      <edges xmi:id="_3OoBAKpZEeGWmNM0TiX1dQ" source="_q5R08apZEeGWmNM0TiX1dQ" target="_1rCuYKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/hor"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_pbS0AapZEeGWmNM0TiX1dQ" origin="_pbSM8apZEeGWmNM0TiX1dQ" image="_pbS0AKpZEeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_qrxkcqpZEeGWmNM0TiX1dQ" origin="_qrxkcKpZEeGWmNM0TiX1dQ" image="_qrxkcapZEeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_q5R08qpZEeGWmNM0TiX1dQ" origin="_q5R08KpZEeGWmNM0TiX1dQ" image="_q5R08apZEeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_rcJ4gapZEeGWmNM0TiX1dQ" origin="_rcJRcKpZEeGWmNM0TiX1dQ" image="_rcJ4gKpZEeGWmNM0TiX1dQ"/>
+  </units>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_xS9gILcYEeGQre7dAX2kZQ" name="buildGrid" subUnits="_Cpq9QKo0EeGWmNM0TiX1dQ _HmDuwLcZEeGQre7dAX2kZQ _0mMrILcbEeGQre7dAX2kZQ">
+    <parameters xmi:id="_y8Xt8LcYEeGQre7dAX2kZQ" name="width" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_y8gQ0LcYEeGQre7dAX2kZQ" name="height" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_r2K4ILeYEeGgKfdtjnLQtA" name="grid" kind="OUT">
+      <type xsi:type="ecore:EClass" href="grid.ecore#//Grid"/>
+    </parameters>
+    <parameterMappings xmi:id="_s0xOYLeYEeGgKfdtjnLQtA" source="_r2K4ILeYEeGgKfdtjnLQtA" target="_yRymQLcgEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_s05KMLeYEeGgKfdtjnLQtA" source="_yRymQLcgEeGQre7dAX2kZQ" target="_r2K4ILeYEeGgKfdtjnLQtA"/>
+    <parameterMappings xmi:id="_EBi0QLcbEeGQre7dAX2kZQ" source="_y8gQ0LcYEeGQre7dAX2kZQ" target="_uDkhELcaEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_EBqJALcbEeGQre7dAX2kZQ" source="_uDkhELcaEeGQre7dAX2kZQ" target="_y8gQ0LcYEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_t_wGILccEeGQre7dAX2kZQ" source="_y8Xt8LcYEeGQre7dAX2kZQ" target="_8Ck9ILcbEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_t_86cLccEeGQre7dAX2kZQ" source="_y8gQ0LcYEeGQre7dAX2kZQ" target="_euZb8LccEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_t_2MwLccEeGQre7dAX2kZQ" source="_8Ck9ILcbEeGQre7dAX2kZQ" target="_y8Xt8LcYEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_uADoILccEeGQre7dAX2kZQ" source="_euZb8LccEeGQre7dAX2kZQ" target="_y8gQ0LcYEeGQre7dAX2kZQ"/>
+  </units>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_Lqd4ALccEeGQre7dAX2kZQ" name="buildNextColumn" subUnits="_sHWKYKo0EeGWmNM0TiX1dQ _K_5tgLcbEeGQre7dAX2kZQ">
+    <parameters xmi:id="_OK6bgLccEeGQre7dAX2kZQ" name="height" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameterMappings xmi:id="_TIZCILccEeGQre7dAX2kZQ" source="_OK6bgLccEeGQre7dAX2kZQ" target="_blauQLcbEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_TIfv0LccEeGQre7dAX2kZQ" source="_blauQLcbEeGQre7dAX2kZQ" target="_OK6bgLccEeGQre7dAX2kZQ"/>
+  </units>
+  <units xsi:type="henshin:IteratedUnit" xmi:id="_HmDuwLcZEeGQre7dAX2kZQ" name="buildFirstColumn" subUnit="_IddhAKpZEeGWmNM0TiX1dQ" iterations="height-2">
+    <parameters xmi:id="_uDkhELcaEeGQre7dAX2kZQ" name="height" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+  </units>
+  <units xsi:type="henshin:IteratedUnit" xmi:id="_K_5tgLcbEeGQre7dAX2kZQ" name="expandNextColumn" subUnit="_lOp0cKpZEeGWmNM0TiX1dQ" iterations="height-1">
+    <parameters xmi:id="_blauQLcbEeGQre7dAX2kZQ" name="height" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+  </units>
+  <units xsi:type="henshin:IteratedUnit" xmi:id="_0mMrILcbEeGQre7dAX2kZQ" name="addColumns" subUnit="_Lqd4ALccEeGQre7dAX2kZQ" iterations="width-1">
+    <parameters xmi:id="_8Ck9ILcbEeGQre7dAX2kZQ" name="width" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_euZb8LccEeGQre7dAX2kZQ" name="height" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameterMappings xmi:id="_fi73QLccEeGQre7dAX2kZQ" source="_euZb8LccEeGQre7dAX2kZQ" target="_OK6bgLccEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_fjCk8LccEeGQre7dAX2kZQ" source="_OK6bgLccEeGQre7dAX2kZQ" target="_euZb8LccEeGQre7dAX2kZQ"/>
+  </units>
+</henshin:Module>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full/grid-full.henshin_text b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full/grid-full.henshin_text
new file mode 100644
index 0000000..e0e6fd7
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full/grid-full.henshin_text
@@ -0,0 +1,110 @@
+ePackageImport grid
+
+rule initGrid(OUT grid:Grid){
+	graph{
+		create node first:Node
+		create node second:Node
+		create node grid:Grid
+		edges[(create first->second:ver),
+			(create grid->first:nodes),
+			(create grid->second:nodes)
+		]
+	}
+}
+
+rule startNextColumn(){
+	graph{
+		node root:Grid
+		node unnamed:Node
+		create node newNode:Node
+		edges[(root->unnamed:nodes),
+			(create root->newNode:nodes),
+			(create unnamed->newNode:hor)
+		]
+		matchingFormula{
+			formula !graph1 AND !graph2
+			conditionGraph graph1{
+				node forbidNode:Node
+				edges[(root->forbidNode:nodes),
+					(forbidNode->unnamed:ver)
+				]
+			}
+			conditionGraph graph2{
+				node forbidNode:Node
+				edges[(root->forbidNode:nodes),
+					(unnamed->forbidNode:hor),
+					(root->unnamed:nodes)
+				]
+			}
+		}
+	}
+}
+
+rule extendFirstColumn(){
+	graph{
+		node root:Grid
+		node first:Node
+		node second:Node
+		create node newNode:Node
+		edges[(root->first:nodes),
+			(root->second:nodes),
+			(delete first->second:ver),
+			(create root->newNode:nodes),
+			(create first->newNode:ver),
+			(create newNode->second:ver)
+		]
+	}
+}
+
+rule extendNextColumn(){
+	graph{
+		node root:Grid
+		node first:Node
+		node second:Node
+		node third:Node
+		forbid node forbidNode:Node
+		create node newNode:Node
+		edges[(root->first:nodes),
+			(root->second:nodes),
+			(root->third:nodes),
+			(first->third:hor),
+			(first->second:ver),
+			(forbid root->forbidNode:nodes),
+			(forbid third->forbidNode:ver),
+			(forbid second->forbidNode:hor),
+			(create root->newNode:nodes),
+			(create third->newNode:ver),
+			(create second->newNode:hor)
+		]
+	}
+}
+
+unit buildGrid(IN width:EInt, IN height:EInt, OUT grid:Grid){
+	initGrid(grid)
+	buildFirstColumn(height)
+	addColumns(width,height)
+}
+
+
+unit buildFirstColumn(IN height:EInt){
+	for(height - 2){
+		extendFirstColumn()
+	}
+}
+
+unit expandNextColumn(IN height:EInt){
+	for(height - 1){
+		extendNextColumn()
+	}
+}
+
+unit addColumns(IN width:EInt,IN height:EInt){
+	for(width - 1){
+		buildNextColumn(height)
+	}
+}
+
+unit buildNextColumn(IN height:EInt){
+	startNextColumn()
+	expandNextColumn(height)
+}
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full/grid.ecore b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full/grid.ecore
new file mode 100644
index 0000000..a6877cd
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full/grid.ecore
@@ -0,0 +1,15 @@
+<?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="grid" nsURI="http://www.eclipse.org/emf/henshin/examples/grid"
+    nsPrefix="grid">
+  <eClassifiers xsi:type="ecore:EClass" name="Node">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="hor" eType="#//Node"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ver" eType="#//Node"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Grid">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1"
+        eType="#//Node" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="matches" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="0"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full_nestedUnits/grid-full.henshin b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full_nestedUnits/grid-full.henshin
new file mode 100644
index 0000000..0243062
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full_nestedUnits/grid-full.henshin
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module 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" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_op50IKopEeGlvMpQNzqMMA" name="HenshinDSL">
+  <imports href="grid.ecore#/"/>
+  <units xsi:type="henshin:Rule" xmi:id="_Cpq9QKo0EeGWmNM0TiX1dQ" name="initGrid">
+    <parameters xmi:id="_yRymQLcgEeGQre7dAX2kZQ" name="grid" kind="OUT">
+      <type xsi:type="ecore:EClass" href="grid.ecore#//Grid"/>
+    </parameters>
+    <lhs xmi:id="_Cpq9Qao0EeGWmNM0TiX1dQ" name="initGrid_LHS"/>
+    <rhs xmi:id="_Cpq9Qqo0EeGWmNM0TiX1dQ" name="initGrid_RHS">
+      <nodes xmi:id="_dZw7oKo0EeGWmNM0TiX1dQ" name="first" incoming="_de7xcLcXEeGQre7dAX2kZQ" outgoing="_ezn6oKptEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_ducLIKo0EeGWmNM0TiX1dQ" name="second" incoming="_ezn6oKptEeGWmNM0TiX1dQ _eRvHYLcXEeGQre7dAX2kZQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_b-vKALcXEeGQre7dAX2kZQ" name="grid" outgoing="_de7xcLcXEeGQre7dAX2kZQ _eRvHYLcXEeGQre7dAX2kZQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <edges xmi:id="_ezn6oKptEeGWmNM0TiX1dQ" source="_dZw7oKo0EeGWmNM0TiX1dQ" target="_ducLIKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+      <edges xmi:id="_de7xcLcXEeGQre7dAX2kZQ" source="_b-vKALcXEeGQre7dAX2kZQ" target="_dZw7oKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_eRvHYLcXEeGQre7dAX2kZQ" source="_b-vKALcXEeGQre7dAX2kZQ" target="_ducLIKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+    </rhs>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_sHWKYKo0EeGWmNM0TiX1dQ" name="startNextColumn">
+    <lhs xmi:id="_sHWKYao0EeGWmNM0TiX1dQ" name="startNextColumn_LHS">
+      <nodes xmi:id="_x9Nxkao0EeGWmNM0TiX1dQ" name="root" outgoing="_x9XikKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_vSa_QKo0EeGWmNM0TiX1dQ" name="unnamed" incoming="_x9XikKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_x9XikKo0EeGWmNM0TiX1dQ" source="_x9Nxkao0EeGWmNM0TiX1dQ" target="_vSa_QKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <formula xsi:type="henshin:And" xmi:id="_O7GfILcYEeGQre7dAX2kZQ">
+        <left xsi:type="henshin:Not" xmi:id="_Lka3MbcYEeGQre7dAX2kZQ">
+          <child xsi:type="henshin:NestedCondition" xmi:id="_Lka3MrcYEeGQre7dAX2kZQ">
+            <conclusion xmi:id="_Lka3M7cYEeGQre7dAX2kZQ" name="graph1">
+              <nodes xmi:id="_IHA8MLcYEeGQre7dAX2kZQ" name="forbidNode" incoming="_Jd6dsLcYEeGQre7dAX2kZQ" outgoing="_KkUFELcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node"/>
+              </nodes>
+              <nodes xmi:id="_LkizALcYEeGQre7dAX2kZQ" name="root" outgoing="_Jd6dsLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Grid"/>
+              </nodes>
+              <nodes xmi:id="_Lk-34LcYEeGQre7dAX2kZQ" name="unnamed" incoming="_KkUFELcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node"/>
+              </nodes>
+              <edges xmi:id="_Jd6dsLcYEeGQre7dAX2kZQ" source="_LkizALcYEeGQre7dAX2kZQ" target="_IHA8MLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Grid/nodes"/>
+              </edges>
+              <edges xmi:id="_KkUFELcYEeGQre7dAX2kZQ" source="_IHA8MLcYEeGQre7dAX2kZQ" target="_Lk-34LcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node/ver"/>
+              </edges>
+            </conclusion>
+            <mappings xmi:id="_LkizAbcYEeGQre7dAX2kZQ" origin="_x9Nxkao0EeGWmNM0TiX1dQ" image="_LkizALcYEeGQre7dAX2kZQ"/>
+            <mappings xmi:id="_Lk-34bcYEeGQre7dAX2kZQ" origin="_vSa_QKo0EeGWmNM0TiX1dQ" image="_Lk-34LcYEeGQre7dAX2kZQ"/>
+          </child>
+        </left>
+        <right xsi:type="henshin:Not" xmi:id="_O7GfIbcYEeGQre7dAX2kZQ">
+          <child xsi:type="henshin:NestedCondition" xmi:id="_O7GfIrcYEeGQre7dAX2kZQ">
+            <conclusion xmi:id="_O7GfI7cYEeGQre7dAX2kZQ" name="graph2">
+              <nodes xmi:id="_N9MFYLcYEeGQre7dAX2kZQ" name="forbidNode" incoming="_O4t5gLcYEeGQre7dAX2kZQ _P0pWQLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node"/>
+              </nodes>
+              <nodes xmi:id="_O7Oa8LcYEeGQre7dAX2kZQ" name="root" outgoing="_O4t5gLcYEeGQre7dAX2kZQ _P0m6ALcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Grid"/>
+              </nodes>
+              <nodes xmi:id="_P0iBgLcYEeGQre7dAX2kZQ" name="unnamed" incoming="_P0m6ALcYEeGQre7dAX2kZQ" outgoing="_P0pWQLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node"/>
+              </nodes>
+              <edges xmi:id="_O4t5gLcYEeGQre7dAX2kZQ" source="_O7Oa8LcYEeGQre7dAX2kZQ" target="_N9MFYLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Grid/nodes"/>
+              </edges>
+              <edges xmi:id="_P0pWQLcYEeGQre7dAX2kZQ" source="_P0iBgLcYEeGQre7dAX2kZQ" target="_N9MFYLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Node/hor"/>
+              </edges>
+              <edges xmi:id="_P0m6ALcYEeGQre7dAX2kZQ" source="_O7Oa8LcYEeGQre7dAX2kZQ" target="_P0iBgLcYEeGQre7dAX2kZQ">
+                <type href="grid.ecore#//Grid/nodes"/>
+              </edges>
+            </conclusion>
+            <mappings xmi:id="_O7Oa8bcYEeGQre7dAX2kZQ" origin="_x9Nxkao0EeGWmNM0TiX1dQ" image="_O7Oa8LcYEeGQre7dAX2kZQ"/>
+            <mappings xmi:id="_P0j2sLcYEeGQre7dAX2kZQ" origin="_vSa_QKo0EeGWmNM0TiX1dQ" image="_P0iBgLcYEeGQre7dAX2kZQ"/>
+          </child>
+        </right>
+      </formula>
+    </lhs>
+    <rhs xmi:id="_sHWKYqo0EeGWmNM0TiX1dQ" name="startNextColumn_RHS">
+      <nodes xmi:id="_x9Nxkqo0EeGWmNM0TiX1dQ" name="root" outgoing="_x9Xikao0EeGWmNM0TiX1dQ _x9Xikqo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_vSa_Qao0EeGWmNM0TiX1dQ" name="unnamed" incoming="_x9Xikao0EeGWmNM0TiX1dQ" outgoing="_5F8u0Ko0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_vu-_cKo0EeGWmNM0TiX1dQ" name="newNode" incoming="_x9Xikqo0EeGWmNM0TiX1dQ _5F8u0Ko0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_x9Xikao0EeGWmNM0TiX1dQ" source="_x9Nxkqo0EeGWmNM0TiX1dQ" target="_vSa_Qao0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_x9Xikqo0EeGWmNM0TiX1dQ" source="_x9Nxkqo0EeGWmNM0TiX1dQ" target="_vu-_cKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_5F8u0Ko0EeGWmNM0TiX1dQ" source="_vSa_Qao0EeGWmNM0TiX1dQ" target="_vu-_cKo0EeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/hor"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_x9Nxk6o0EeGWmNM0TiX1dQ" origin="_x9Nxkao0EeGWmNM0TiX1dQ" image="_x9Nxkqo0EeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_vSa_Qqo0EeGWmNM0TiX1dQ" origin="_vSa_QKo0EeGWmNM0TiX1dQ" image="_vSa_Qao0EeGWmNM0TiX1dQ"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_IddhAKpZEeGWmNM0TiX1dQ" name="extendFirstColumn">
+    <lhs xmi:id="_IddhAapZEeGWmNM0TiX1dQ" name="extendFirstColumn_LHS">
+      <nodes xmi:id="_MOh-4apZEeGWmNM0TiX1dQ" name="root" outgoing="_NXpjEKpZEeGWmNM0TiX1dQ _NyRpkKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_NXo8AKpZEeGWmNM0TiX1dQ" name="first" incoming="_NXpjEKpZEeGWmNM0TiX1dQ" outgoing="_T2X6AKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_NyRCgKpZEeGWmNM0TiX1dQ" name="second" incoming="_NyRpkKpZEeGWmNM0TiX1dQ _T2X6AKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_NXpjEKpZEeGWmNM0TiX1dQ" source="_MOh-4apZEeGWmNM0TiX1dQ" target="_NXo8AKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_NyRpkKpZEeGWmNM0TiX1dQ" source="_MOh-4apZEeGWmNM0TiX1dQ" target="_NyRCgKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_T2X6AKpZEeGWmNM0TiX1dQ" source="_NXo8AKpZEeGWmNM0TiX1dQ" target="_NyRCgKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_IddhAqpZEeGWmNM0TiX1dQ" name="extendFirstColumn_RHS">
+      <nodes xmi:id="_MOil8KpZEeGWmNM0TiX1dQ" name="root" outgoing="_NXpjEapZEeGWmNM0TiX1dQ _NyRpkapZEeGWmNM0TiX1dQ _WQiPUKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_NXo8AapZEeGWmNM0TiX1dQ" name="first" incoming="_NXpjEapZEeGWmNM0TiX1dQ" outgoing="_XVMKQKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_NyRCgapZEeGWmNM0TiX1dQ" name="second" incoming="_NyRpkapZEeGWmNM0TiX1dQ _X1RYgKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_WQgaIKpZEeGWmNM0TiX1dQ" name="newNode" incoming="_WQiPUKpZEeGWmNM0TiX1dQ _XVMKQKpZEeGWmNM0TiX1dQ" outgoing="_X1RYgKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_NXpjEapZEeGWmNM0TiX1dQ" source="_MOil8KpZEeGWmNM0TiX1dQ" target="_NXo8AapZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_NyRpkapZEeGWmNM0TiX1dQ" source="_MOil8KpZEeGWmNM0TiX1dQ" target="_NyRCgapZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_WQiPUKpZEeGWmNM0TiX1dQ" source="_MOil8KpZEeGWmNM0TiX1dQ" target="_WQgaIKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_XVMKQKpZEeGWmNM0TiX1dQ" source="_NXo8AapZEeGWmNM0TiX1dQ" target="_WQgaIKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+      <edges xmi:id="_X1RYgKpZEeGWmNM0TiX1dQ" source="_WQgaIKpZEeGWmNM0TiX1dQ" target="_NyRCgapZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_MOil8apZEeGWmNM0TiX1dQ" origin="_MOh-4apZEeGWmNM0TiX1dQ" image="_MOil8KpZEeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_NXo8AqpZEeGWmNM0TiX1dQ" origin="_NXo8AKpZEeGWmNM0TiX1dQ" image="_NXo8AapZEeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_NyRCgqpZEeGWmNM0TiX1dQ" origin="_NyRCgKpZEeGWmNM0TiX1dQ" image="_NyRCgapZEeGWmNM0TiX1dQ"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_lOp0cKpZEeGWmNM0TiX1dQ" name="extendNextColumn">
+    <lhs xmi:id="_lOp0capZEeGWmNM0TiX1dQ" name="extendNextColumn_LHS">
+      <nodes xmi:id="_pbSM8apZEeGWmNM0TiX1dQ" name="root" outgoing="_qryykKpZEeGWmNM0TiX1dQ _q5ScAKpZEeGWmNM0TiX1dQ _rcKfkKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_qrxkcKpZEeGWmNM0TiX1dQ" name="first" incoming="_qryykKpZEeGWmNM0TiX1dQ" outgoing="_r-nsYKpZEeGWmNM0TiX1dQ _sZfDcKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_q5R08KpZEeGWmNM0TiX1dQ" name="second" incoming="_q5ScAKpZEeGWmNM0TiX1dQ _sZfDcKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_rcJRcKpZEeGWmNM0TiX1dQ" name="third" incoming="_rcKfkKpZEeGWmNM0TiX1dQ _r-nsYKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_qryykKpZEeGWmNM0TiX1dQ" source="_pbSM8apZEeGWmNM0TiX1dQ" target="_qrxkcKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_q5ScAKpZEeGWmNM0TiX1dQ" source="_pbSM8apZEeGWmNM0TiX1dQ" target="_q5R08KpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_rcKfkKpZEeGWmNM0TiX1dQ" source="_pbSM8apZEeGWmNM0TiX1dQ" target="_rcJRcKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_r-nsYKpZEeGWmNM0TiX1dQ" source="_qrxkcKpZEeGWmNM0TiX1dQ" target="_rcJRcKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/hor"/>
+      </edges>
+      <edges xmi:id="_sZfDcKpZEeGWmNM0TiX1dQ" source="_qrxkcKpZEeGWmNM0TiX1dQ" target="_q5R08KpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+      <formula xsi:type="henshin:Not" xmi:id="_Wrk-YfjuEeGdld1gVIPz9w">
+        <child xsi:type="henshin:NestedCondition" xmi:id="_Wrk-YvjuEeGdld1gVIPz9w">
+          <conclusion xmi:id="_Wrk-Y_juEeGdld1gVIPz9w" name="forbid">
+            <nodes xmi:id="_xcRn4KpZEeGWmNM0TiX1dQ" name="forbidNode" incoming="_xcTdEKpZEeGWmNM0TiX1dQ _x4XG8KpZEeGWmNM0TiX1dQ _HLfmwKrxEeGrSuUOoDQ5Sw">
+              <type href="grid.ecore#//Node"/>
+            </nodes>
+            <nodes xmi:id="_Wrqd8PjuEeGdld1gVIPz9w" name="root" outgoing="_xcTdEKpZEeGWmNM0TiX1dQ">
+              <type href="grid.ecore#//Grid"/>
+            </nodes>
+            <nodes xmi:id="_Wr-nAPjuEeGdld1gVIPz9w" name="third" outgoing="_x4XG8KpZEeGWmNM0TiX1dQ">
+              <type href="grid.ecore#//Node"/>
+            </nodes>
+            <nodes xmi:id="_WsTXIPjuEeGdld1gVIPz9w" name="second" outgoing="_HLfmwKrxEeGrSuUOoDQ5Sw">
+              <type href="grid.ecore#//Node"/>
+            </nodes>
+            <edges xmi:id="_xcTdEKpZEeGWmNM0TiX1dQ" source="_Wrqd8PjuEeGdld1gVIPz9w" target="_xcRn4KpZEeGWmNM0TiX1dQ">
+              <type href="grid.ecore#//Grid/nodes"/>
+            </edges>
+            <edges xmi:id="_x4XG8KpZEeGWmNM0TiX1dQ" source="_Wr-nAPjuEeGdld1gVIPz9w" target="_xcRn4KpZEeGWmNM0TiX1dQ">
+              <type href="grid.ecore#//Node/ver"/>
+            </edges>
+            <edges xmi:id="_HLfmwKrxEeGrSuUOoDQ5Sw" source="_WsTXIPjuEeGdld1gVIPz9w" target="_xcRn4KpZEeGWmNM0TiX1dQ">
+              <type href="grid.ecore#//Node/hor"/>
+            </edges>
+          </conclusion>
+          <mappings xmi:id="_Wrqd8fjuEeGdld1gVIPz9w" origin="_pbSM8apZEeGWmNM0TiX1dQ" image="_Wrqd8PjuEeGdld1gVIPz9w"/>
+          <mappings xmi:id="_Wr-nAfjuEeGdld1gVIPz9w" origin="_rcJRcKpZEeGWmNM0TiX1dQ" image="_Wr-nAPjuEeGdld1gVIPz9w"/>
+          <mappings xmi:id="_WsTXIfjuEeGdld1gVIPz9w" origin="_q5R08KpZEeGWmNM0TiX1dQ" image="_WsTXIPjuEeGdld1gVIPz9w"/>
+        </child>
+      </formula>
+    </lhs>
+    <rhs xmi:id="_lOp0cqpZEeGWmNM0TiX1dQ" name="extendNextColumn_RHS">
+      <nodes xmi:id="_pbS0AKpZEeGWmNM0TiX1dQ" name="root" outgoing="_qrzZoKpZEeGWmNM0TiX1dQ _q5TDEKpZEeGWmNM0TiX1dQ _rcLGoKpZEeGWmNM0TiX1dQ _1rFKoKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid"/>
+      </nodes>
+      <nodes xmi:id="_qrxkcapZEeGWmNM0TiX1dQ" name="first" description="" incoming="_qrzZoKpZEeGWmNM0TiX1dQ" outgoing="_r-oTcKpZEeGWmNM0TiX1dQ _sZgRkKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_q5R08apZEeGWmNM0TiX1dQ" name="second" incoming="_q5TDEKpZEeGWmNM0TiX1dQ _sZgRkKpZEeGWmNM0TiX1dQ" outgoing="_3OoBAKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_rcJ4gKpZEeGWmNM0TiX1dQ" name="third" incoming="_rcLGoKpZEeGWmNM0TiX1dQ _r-oTcKpZEeGWmNM0TiX1dQ" outgoing="_2naQAKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <nodes xmi:id="_1rCuYKpZEeGWmNM0TiX1dQ" name="newNode" incoming="_1rFKoKpZEeGWmNM0TiX1dQ _2naQAKpZEeGWmNM0TiX1dQ _3OoBAKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node"/>
+      </nodes>
+      <edges xmi:id="_qrzZoKpZEeGWmNM0TiX1dQ" source="_pbS0AKpZEeGWmNM0TiX1dQ" target="_qrxkcapZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_q5TDEKpZEeGWmNM0TiX1dQ" source="_pbS0AKpZEeGWmNM0TiX1dQ" target="_q5R08apZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_rcLGoKpZEeGWmNM0TiX1dQ" source="_pbS0AKpZEeGWmNM0TiX1dQ" target="_rcJ4gKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_r-oTcKpZEeGWmNM0TiX1dQ" source="_qrxkcapZEeGWmNM0TiX1dQ" target="_rcJ4gKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/hor"/>
+      </edges>
+      <edges xmi:id="_sZgRkKpZEeGWmNM0TiX1dQ" source="_qrxkcapZEeGWmNM0TiX1dQ" target="_q5R08apZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+      <edges xmi:id="_1rFKoKpZEeGWmNM0TiX1dQ" source="_pbS0AKpZEeGWmNM0TiX1dQ" target="_1rCuYKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Grid/nodes"/>
+      </edges>
+      <edges xmi:id="_2naQAKpZEeGWmNM0TiX1dQ" source="_rcJ4gKpZEeGWmNM0TiX1dQ" target="_1rCuYKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/ver"/>
+      </edges>
+      <edges xmi:id="_3OoBAKpZEeGWmNM0TiX1dQ" source="_q5R08apZEeGWmNM0TiX1dQ" target="_1rCuYKpZEeGWmNM0TiX1dQ">
+        <type href="grid.ecore#//Node/hor"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_pbS0AapZEeGWmNM0TiX1dQ" origin="_pbSM8apZEeGWmNM0TiX1dQ" image="_pbS0AKpZEeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_qrxkcqpZEeGWmNM0TiX1dQ" origin="_qrxkcKpZEeGWmNM0TiX1dQ" image="_qrxkcapZEeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_q5R08qpZEeGWmNM0TiX1dQ" origin="_q5R08KpZEeGWmNM0TiX1dQ" image="_q5R08apZEeGWmNM0TiX1dQ"/>
+    <mappings xmi:id="_rcJ4gapZEeGWmNM0TiX1dQ" origin="_rcJRcKpZEeGWmNM0TiX1dQ" image="_rcJ4gKpZEeGWmNM0TiX1dQ"/>
+  </units>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_Lqd4ALccEeGQre7dAX2kZQ" name="buildGridSequence0_2_782ITERATED1_782" subUnits="_sHWKYKo0EeGWmNM0TiX1dQ _K_5tgLcbEeGQre7dAX2kZQ">
+    <parameters xmi:id="_T6Rb8LQAEeaa4pHfXx_Y4A" name="width_buildGridSequence0_2_782_buildGridSequence0_2_782ITERATED1_782" description="" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_OK6bgLccEeGQre7dAX2kZQ" name="height_buildGridSequence0_2_782_buildGridSequence0_2_782ITERATED1_782" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_ZcnqMLQAEeaa4pHfXx_Y4A" name="grid_buildGridSequence0_2_782_buildGridSequence0_2_782ITERATED1_782" description="" kind="OUT">
+      <type xsi:type="ecore:EClass" href="grid.ecore#//Grid"/>
+    </parameters>
+    <parameterMappings xmi:id="_RHt_ULQBEeaa4pHfXx_Y4A" source="_T6Rb8LQAEeaa4pHfXx_Y4A" target="_F5aT0LQBEeaa4pHfXx_Y4A"/>
+    <parameterMappings xmi:id="_TIZCILccEeGQre7dAX2kZQ" source="_OK6bgLccEeGQre7dAX2kZQ" target="_blauQLcbEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_jKqAULQBEeaa4pHfXx_Y4A" source="_ZcnqMLQAEeaa4pHfXx_Y4A" target="_K8mg4LQBEeaa4pHfXx_Y4A"/>
+    <parameterMappings xmi:id="_vJkCULQBEeaa4pHfXx_Y4A" source="_F5aT0LQBEeaa4pHfXx_Y4A" target="_T6Rb8LQAEeaa4pHfXx_Y4A"/>
+    <parameterMappings xmi:id="_TIfv0LccEeGQre7dAX2kZQ" source="_blauQLcbEeGQre7dAX2kZQ" target="_OK6bgLccEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_19hCYLQBEeaa4pHfXx_Y4A" source="_K8mg4LQBEeaa4pHfXx_Y4A" target="_ZcnqMLQAEeaa4pHfXx_Y4A"/>
+  </units>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_xS9gILcYEeGQre7dAX2kZQ" name="buildGrid" subUnits="_Cpq9QKo0EeGWmNM0TiX1dQ _HmDuwLcZEeGQre7dAX2kZQ _0mMrILcbEeGQre7dAX2kZQ">
+    <parameters xmi:id="_y8Xt8LcYEeGQre7dAX2kZQ" name="width" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_y8gQ0LcYEeGQre7dAX2kZQ" name="height" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_r2K4ILeYEeGgKfdtjnLQtA" name="grid" kind="OUT">
+      <type xsi:type="ecore:EClass" href="grid.ecore#//Grid"/>
+    </parameters>
+    <parameterMappings xmi:id="_s0xOYLeYEeGgKfdtjnLQtA" source="_r2K4ILeYEeGgKfdtjnLQtA" target="_yRymQLcgEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_s05KMLeYEeGgKfdtjnLQtA" source="_yRymQLcgEeGQre7dAX2kZQ" target="_r2K4ILeYEeGgKfdtjnLQtA"/>
+    <parameterMappings xmi:id="_TY0CwLQCEeaa4pHfXx_Y4A" source="_y8Xt8LcYEeGQre7dAX2kZQ" target="_llxNULQAEeaa4pHfXx_Y4A"/>
+    <parameterMappings xmi:id="_EBi0QLcbEeGQre7dAX2kZQ" source="_y8gQ0LcYEeGQre7dAX2kZQ" target="_uDkhELcaEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_dTEFYLQCEeaa4pHfXx_Y4A" source="_r2K4ILeYEeGgKfdtjnLQtA" target="_0T2LULQAEeaa4pHfXx_Y4A"/>
+    <parameterMappings xmi:id="_tg4X0LQCEeaa4pHfXx_Y4A" source="_llxNULQAEeaa4pHfXx_Y4A" target="_y8Xt8LcYEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_EBqJALcbEeGQre7dAX2kZQ" source="_uDkhELcaEeGQre7dAX2kZQ" target="_y8gQ0LcYEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_3vyb0LQCEeaa4pHfXx_Y4A" source="_0T2LULQAEeaa4pHfXx_Y4A" target="_r2K4ILeYEeGgKfdtjnLQtA"/>
+    <parameterMappings xmi:id="_t_wGILccEeGQre7dAX2kZQ" source="_y8Xt8LcYEeGQre7dAX2kZQ" target="_8Ck9ILcbEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_t_86cLccEeGQre7dAX2kZQ" source="_y8gQ0LcYEeGQre7dAX2kZQ" target="_euZb8LccEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_CnN4YLQDEeaa4pHfXx_Y4A" source="_r2K4ILeYEeGgKfdtjnLQtA" target="__wueULQAEeaa4pHfXx_Y4A"/>
+    <parameterMappings xmi:id="_t_2MwLccEeGQre7dAX2kZQ" source="_8Ck9ILcbEeGQre7dAX2kZQ" target="_y8Xt8LcYEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_uADoILccEeGQre7dAX2kZQ" source="_euZb8LccEeGQre7dAX2kZQ" target="_y8gQ0LcYEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_GOh9ULQDEeaa4pHfXx_Y4A" source="__wueULQAEeaa4pHfXx_Y4A" target="_r2K4ILeYEeGgKfdtjnLQtA"/>
+  </units>
+  <units xsi:type="henshin:IteratedUnit" xmi:id="_HmDuwLcZEeGQre7dAX2kZQ" name="buildGridSequence0_1_782" subUnit="_IddhAKpZEeGWmNM0TiX1dQ" iterations="height-2">
+    <parameters xmi:id="_llxNULQAEeaa4pHfXx_Y4A" name="width_buildGridSequence0_1_782" description="" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_uDkhELcaEeGQre7dAX2kZQ" name="height_buildGridSequence0_1_782" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_0T2LULQAEeaa4pHfXx_Y4A" name="grid_buildGridSequence0_1_782" kind="OUT">
+      <type xsi:type="ecore:EClass" href="grid.ecore#//Grid"/>
+    </parameters>
+  </units>
+  <units xsi:type="henshin:IteratedUnit" xmi:id="_0mMrILcbEeGQre7dAX2kZQ" name="buildGridSequence0_2_782" subUnit="_Lqd4ALccEeGQre7dAX2kZQ" iterations="width-1">
+    <parameters xmi:id="_8Ck9ILcbEeGQre7dAX2kZQ" name="width_buildGridSequence0_2_782" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_euZb8LccEeGQre7dAX2kZQ" name="height_buildGridSequence0_2_782" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="__wueULQAEeaa4pHfXx_Y4A" name="grid_buildGridSequence0_2_782" kind="OUT">
+      <type xsi:type="ecore:EClass" href="grid.ecore#//Grid"/>
+    </parameters>
+    <parameterMappings xmi:id="_5Ka74LQEEeaa4pHfXx_Y4A" source="_8Ck9ILcbEeGQre7dAX2kZQ" target="_T6Rb8LQAEeaa4pHfXx_Y4A"/>
+    <parameterMappings xmi:id="_fi73QLccEeGQre7dAX2kZQ" source="_euZb8LccEeGQre7dAX2kZQ" target="_OK6bgLccEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_-X1b8LQEEeaa4pHfXx_Y4A" source="__wueULQAEeaa4pHfXx_Y4A" target="_ZcnqMLQAEeaa4pHfXx_Y4A"/>
+    <parameterMappings xmi:id="_B52KILQFEeaa4pHfXx_Y4A" source="_T6Rb8LQAEeaa4pHfXx_Y4A" target="_8Ck9ILcbEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_fjCk8LccEeGQre7dAX2kZQ" source="_OK6bgLccEeGQre7dAX2kZQ" target="_euZb8LccEeGQre7dAX2kZQ"/>
+    <parameterMappings xmi:id="_FNE1cLQFEeaa4pHfXx_Y4A" source="_ZcnqMLQAEeaa4pHfXx_Y4A" target="__wueULQAEeaa4pHfXx_Y4A"/>
+  </units>
+  <units xsi:type="henshin:IteratedUnit" xmi:id="_K_5tgLcbEeGQre7dAX2kZQ" name="buildGridSequence0_2_782ITERATED1_782Sequence2_1_782" subUnit="_lOp0cKpZEeGWmNM0TiX1dQ" iterations="height-1">
+    <parameters xmi:id="_F5aT0LQBEeaa4pHfXx_Y4A" name="width_buildGridSequence0_2_782_buildGridSequence0_2_782ITERATED1_782_buildGridSequence0_2_782ITERATED1_782Sequence2_1_782" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_blauQLcbEeGQre7dAX2kZQ" name="height_buildGridSequence0_2_782_buildGridSequence0_2_782ITERATED1_782_buildGridSequence0_2_782ITERATED1_782Sequence2_1_782" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+    <parameters xmi:id="_K8mg4LQBEeaa4pHfXx_Y4A" name="grid_buildGridSequence0_2_782_buildGridSequence0_2_782ITERATED1_782_buildGridSequence0_2_782ITERATED1_782Sequence2_1_782" kind="OUT">
+      <type xsi:type="ecore:EClass" href="grid.ecore#//Grid"/>
+    </parameters>
+  </units>
+</henshin:Module>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full_nestedUnits/grid-full.henshin_text b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full_nestedUnits/grid-full.henshin_text
new file mode 100644
index 0000000..c52e015
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full_nestedUnits/grid-full.henshin_text
@@ -0,0 +1,94 @@
+ePackageImport grid
+
+rule initGrid(OUT grid:Grid){
+	graph{
+		create node first:Node
+		create node second:Node
+		create node grid:Grid
+		edges[(create first->second:ver),
+			(create grid->first:nodes),
+			(create grid->second:nodes)
+		]
+	}
+}
+
+rule startNextColumn(){
+	graph{
+		node root:Grid
+		node unnamed:Node
+		create node newNode:Node
+		edges[(root->unnamed:nodes),
+			(create root->newNode:nodes),
+			(create unnamed->newNode:hor)
+		]
+		matchingFormula{
+			formula !graph1 AND !graph2
+			conditionGraph graph1{
+				node forbidNode:Node
+				edges[(root->forbidNode:nodes),
+					(forbidNode->unnamed:ver)
+				]
+			}
+			conditionGraph graph2{
+				node forbidNode:Node
+				edges[(root->forbidNode:nodes),
+					(unnamed->forbidNode:hor),
+					(root->unnamed:nodes)
+				]
+			}
+		}
+	}
+}
+
+rule extendFirstColumn(){
+	graph{
+		node root:Grid
+		node first:Node
+		node second:Node
+		create node newNode:Node
+		edges[(root->first:nodes),
+			(root->second:nodes),
+			(delete first->second:ver),
+			(create root->newNode:nodes),
+			(create first->newNode:ver),
+			(create newNode->second:ver)
+		]
+	}
+}
+
+rule extendNextColumn(){
+	graph{
+		node root:Grid
+		node first:Node
+		node second:Node
+		node third:Node
+		forbid node forbidNode:Node
+		create node newNode:Node
+		edges[(root->first:nodes),
+			(root->second:nodes),
+			(root->third:nodes),
+			(first->third:hor),
+			(first->second:ver),
+			(forbid root->forbidNode:nodes),
+			(forbid third->forbidNode:ver),
+			(forbid second->forbidNode:hor),
+			(create root->newNode:nodes),
+			(create third->newNode:ver),
+			(create second->newNode:hor)
+		]
+	}
+}
+
+unit buildGrid(IN width:EInt, IN height:EInt, OUT grid:Grid){
+	initGrid(grid)
+	for(height - 2){
+		extendFirstColumn()
+	}
+	for(width - 1){
+		startNextColumn()
+		for(height - 1){
+			extendNextColumn()
+		}
+	}
+	
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full_nestedUnits/grid.ecore b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full_nestedUnits/grid.ecore
new file mode 100644
index 0000000..a6877cd
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/grid-full_nestedUnits/grid.ecore
@@ -0,0 +1,15 @@
+<?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="grid" nsURI="http://www.eclipse.org/emf/henshin/examples/grid"
+    nsPrefix="grid">
+  <eClassifiers xsi:type="ecore:EClass" name="Node">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="hor" eType="#//Node"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ver" eType="#//Node"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Grid">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1"
+        eType="#//Node" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="matches" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="0"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/movies/movies.ecore b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/movies/movies.ecore
new file mode 100644
index 0000000..5d5b4ac
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/movies/movies.ecore
@@ -0,0 +1,38 @@
+<?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="movies" nsURI="http://movies/1.0" nsPrefix="movies">
+  <eClassifiers xsi:type="ecore:EClass" name="Person" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="movies" upperBound="-1"
+        eType="#//Movie" eOpposite="#//Movie/persons"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Actor" eSuperTypes="#//Person"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Actress" eSuperTypes="#//Person"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Couple" eSuperTypes="#//Group">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="p1" eType="#//Person"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="p2" eType="#//Person"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Movie">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="persons" upperBound="-1"
+        eType="#//Person" eOpposite="#//Person/movies"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="rating" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="year" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//MovieType"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="MovieType">
+    <eLiterals name="MOVIE"/>
+    <eLiterals name="VIDEO" value="1"/>
+    <eLiterals name="TV" value="2"/>
+    <eLiterals name="VIDEOGAME" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Group" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="commonMovies" upperBound="-1"
+        eType="#//Movie"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="avgRating" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Clique" eSuperTypes="#//Group">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="persons" upperBound="-1"
+        eType="#//Person"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/movies/movies.henshin b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/movies/movies.henshin
new file mode 100644
index 0000000..0fa5912
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/movies/movies.henshin
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module 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" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_sZHVoGiUEeOaeph0C5BmPA" name="HenshinDSL">
+  <imports href="movies.ecore#/"/>
+  <units xsi:type="henshin:Rule" xmi:id="_tfVW0GiUEeOaeph0C5BmPA" name="findCouples">
+    <lhs xmi:id="_tffH0GiUEeOaeph0C5BmPA" name="findCouples_LHS"/>
+    <rhs xmi:id="_tffH0WiUEeOaeph0C5BmPA" name="findCouples_RHS"/>
+    <multiRules xmi:id="_w8xFAGiqEeOaeph0C5BmPA" name="multiFindCouples">
+      <lhs xmi:id="_w8xFAWiqEeOaeph0C5BmPA" name="multiFindCouples_LHS">
+        <nodes xmi:id="_P7dnQGiqEeOaeph0C5BmPA" name="first">
+          <type href="movies.ecore#//Person"/>
+        </nodes>
+        <nodes xmi:id="_ReoDIGiqEeOaeph0C5BmPA" name="second">
+          <type href="movies.ecore#//Person"/>
+        </nodes>
+        <formula xsi:type="henshin:NestedCondition" xmi:id="_MC8oIGirEeOaeph0C5BmPA">
+          <conclusion xmi:id="_MC8oIWirEeOaeph0C5BmPA" name="require">
+            <nodes xmi:id="_OljkQGiqEeOaeph0C5BmPA" name="movie1" incoming="_39UWoGiqEeOaeph0C5BmPA _KfQAwGirEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Movie"/>
+            </nodes>
+            <nodes xmi:id="_OzG4EGiqEeOaeph0C5BmPA" name="movie2" incoming="_4kmZEGiqEeOaeph0C5BmPA _Ji9-sGirEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Movie"/>
+            </nodes>
+            <nodes xmi:id="_O8ongGiqEeOaeph0C5BmPA" name="movie3" incoming="_JPBvAGirEeOaeph0C5BmPA _J8HegGirEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Movie"/>
+            </nodes>
+            <nodes xmi:id="_MC8oLWirEeOaeph0C5BmPA" name="second" outgoing="_JPBvAGirEeOaeph0C5BmPA _Ji9-sGirEeOaeph0C5BmPA _KfQAwGirEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Person"/>
+            </nodes>
+            <nodes xmi:id="_MC8oImirEeOaeph0C5BmPA" name="first" outgoing="_J8HegGirEeOaeph0C5BmPA _4kmZEGiqEeOaeph0C5BmPA _39UWoGiqEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Person"/>
+            </nodes>
+            <edges xmi:id="_JPBvAGirEeOaeph0C5BmPA" source="_MC8oLWirEeOaeph0C5BmPA" target="_O8ongGiqEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Person/movies"/>
+            </edges>
+            <edges xmi:id="_J8HegGirEeOaeph0C5BmPA" source="_MC8oImirEeOaeph0C5BmPA" target="_O8ongGiqEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Person/movies"/>
+            </edges>
+            <edges xmi:id="_4kmZEGiqEeOaeph0C5BmPA" source="_MC8oImirEeOaeph0C5BmPA" target="_OzG4EGiqEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Person/movies"/>
+            </edges>
+            <edges xmi:id="_Ji9-sGirEeOaeph0C5BmPA" source="_MC8oLWirEeOaeph0C5BmPA" target="_OzG4EGiqEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Person/movies"/>
+            </edges>
+            <edges xmi:id="_39UWoGiqEeOaeph0C5BmPA" source="_MC8oImirEeOaeph0C5BmPA" target="_OljkQGiqEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Person/movies"/>
+            </edges>
+            <edges xmi:id="_KfQAwGirEeOaeph0C5BmPA" source="_MC8oLWirEeOaeph0C5BmPA" target="_OljkQGiqEeOaeph0C5BmPA">
+              <type href="movies.ecore#//Person/movies"/>
+            </edges>
+          </conclusion>
+          <mappings xmi:id="_MC8oLmirEeOaeph0C5BmPA" origin="_ReoDIGiqEeOaeph0C5BmPA" image="_MC8oLWirEeOaeph0C5BmPA"/>
+          <mappings xmi:id="_MC8oI2irEeOaeph0C5BmPA" origin="_P7dnQGiqEeOaeph0C5BmPA" image="_MC8oImirEeOaeph0C5BmPA"/>
+        </formula>
+      </lhs>
+      <rhs xmi:id="_w8xFAmiqEeOaeph0C5BmPA" name="multiFindCouples_RHS">
+        <nodes xmi:id="_QuFXAGiqEeOaeph0C5BmPA" name="first" incoming="_Yub4wGiqEeOaeph0C5BmPA">
+          <type href="movies.ecore#//Person"/>
+        </nodes>
+        <nodes xmi:id="_ReoDIWiqEeOaeph0C5BmPA" name="second" incoming="_ZATr4GiqEeOaeph0C5BmPA">
+          <type href="movies.ecore#//Person"/>
+        </nodes>
+        <nodes xmi:id="_YHueEGiqEeOaeph0C5BmPA" name="newNode" outgoing="_Yub4wGiqEeOaeph0C5BmPA _ZATr4GiqEeOaeph0C5BmPA">
+          <type href="movies.ecore#//Couple"/>
+        </nodes>
+        <edges xmi:id="_Yub4wGiqEeOaeph0C5BmPA" source="_YHueEGiqEeOaeph0C5BmPA" target="_QuFXAGiqEeOaeph0C5BmPA">
+          <type href="movies.ecore#//Couple/p1"/>
+        </edges>
+        <edges xmi:id="_ZATr4GiqEeOaeph0C5BmPA" source="_YHueEGiqEeOaeph0C5BmPA" target="_ReoDIWiqEeOaeph0C5BmPA">
+          <type href="movies.ecore#//Couple/p2"/>
+        </edges>
+      </rhs>
+      <mappings xmi:id="_QuFXAWiqEeOaeph0C5BmPA" origin="_P7dnQGiqEeOaeph0C5BmPA" image="_QuFXAGiqEeOaeph0C5BmPA"/>
+      <mappings xmi:id="_ReoDImiqEeOaeph0C5BmPA" origin="_ReoDIGiqEeOaeph0C5BmPA" image="_ReoDIWiqEeOaeph0C5BmPA"/>
+    </multiRules>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_gAkNIGirEeOaeph0C5BmPA" name="createPositive">
+    <lhs xmi:id="_gAtXEGirEeOaeph0C5BmPA" name="createPositive_LHS"/>
+    <rhs xmi:id="_gAtXEWirEeOaeph0C5BmPA" name="createPositive_RHS">
+      <nodes xmi:id="_xCSowGirEeOaeph0C5BmPA" name="actor1" outgoing="_7asnAGirEeOaeph0C5BmPA _-xzswGirEeOaeph0C5BmPA __JAr0GirEeOaeph0C5BmPA __nW0sGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Actor"/>
+      </nodes>
+      <nodes xmi:id="_ykL5UGirEeOaeph0C5BmPA" name="actress1" outgoing="_AA8ZYGisEeOaeph0C5BmPA _AarvEGisEeOaeph0C5BmPA _A9MmQGisEeOaeph0C5BmPA _DI4asGisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Actress"/>
+      </nodes>
+      <nodes xmi:id="_zZSVUGirEeOaeph0C5BmPA" name="movie1" incoming="_-xzswGirEeOaeph0C5BmPA _AA8ZYGisEeOaeph0C5BmPA _GMXZ0GisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Movie"/>
+      </nodes>
+      <nodes xmi:id="_zkmNcGirEeOaeph0C5BmPA" name="movie2" incoming="__JAr0GirEeOaeph0C5BmPA _AarvEGisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Movie"/>
+      </nodes>
+      <nodes xmi:id="_ztXu8GirEeOaeph0C5BmPA" name="movie3" incoming="__nW0sGirEeOaeph0C5BmPA _A9MmQGisEeOaeph0C5BmPA _Gvn34GisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Movie"/>
+      </nodes>
+      <nodes xmi:id="_0Vs6QGirEeOaeph0C5BmPA" name="movie4" incoming="_6wS_IGirEeOaeph0C5BmPA _7asnAGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Movie"/>
+      </nodes>
+      <nodes xmi:id="_0m9CUGirEeOaeph0C5BmPA" name="movie5" incoming="_DI4asGisEeOaeph0C5BmPA _Du-KUGisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Movie"/>
+      </nodes>
+      <nodes xmi:id="_1WtEQGirEeOaeph0C5BmPA" name="actor2" outgoing="_6wS_IGirEeOaeph0C5BmPA _GMXZ0GisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Actor"/>
+      </nodes>
+      <nodes xmi:id="_16HTUGirEeOaeph0C5BmPA" name="actress2" outgoing="_Du-KUGisEeOaeph0C5BmPA _Gvn34GisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Actress"/>
+      </nodes>
+      <edges xmi:id="_6wS_IGirEeOaeph0C5BmPA" source="_1WtEQGirEeOaeph0C5BmPA" target="_0Vs6QGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_7asnAGirEeOaeph0C5BmPA" source="_xCSowGirEeOaeph0C5BmPA" target="_0Vs6QGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_-xzswGirEeOaeph0C5BmPA" source="_xCSowGirEeOaeph0C5BmPA" target="_zZSVUGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="__JAr0GirEeOaeph0C5BmPA" source="_xCSowGirEeOaeph0C5BmPA" target="_zkmNcGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="__nW0sGirEeOaeph0C5BmPA" source="_xCSowGirEeOaeph0C5BmPA" target="_ztXu8GirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_AA8ZYGisEeOaeph0C5BmPA" source="_ykL5UGirEeOaeph0C5BmPA" target="_zZSVUGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_AarvEGisEeOaeph0C5BmPA" source="_ykL5UGirEeOaeph0C5BmPA" target="_zkmNcGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_A9MmQGisEeOaeph0C5BmPA" source="_ykL5UGirEeOaeph0C5BmPA" target="_ztXu8GirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_DI4asGisEeOaeph0C5BmPA" source="_ykL5UGirEeOaeph0C5BmPA" target="_0m9CUGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_Du-KUGisEeOaeph0C5BmPA" source="_16HTUGirEeOaeph0C5BmPA" target="_0m9CUGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_GMXZ0GisEeOaeph0C5BmPA" source="_1WtEQGirEeOaeph0C5BmPA" target="_zZSVUGirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_Gvn34GisEeOaeph0C5BmPA" source="_16HTUGirEeOaeph0C5BmPA" target="_ztXu8GirEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+    </rhs>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_vA7_kGisEeOaeph0C5BmPA" name="createNegative">
+    <lhs xmi:id="_vA7_kWisEeOaeph0C5BmPA" name="createNegative_LHS"/>
+    <rhs xmi:id="_vA7_kmisEeOaeph0C5BmPA" name="createNegative_RHS">
+      <nodes xmi:id="_vA7_k2isEeOaeph0C5BmPA" name="actor1" outgoing="_vA7_nWisEeOaeph0C5BmPA _vA7_nmisEeOaeph0C5BmPA _vA7_oGisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Actor"/>
+      </nodes>
+      <nodes xmi:id="_vA7_lGisEeOaeph0C5BmPA" name="actress1" outgoing="_vA7_oWisEeOaeph0C5BmPA _vA7_o2isEeOaeph0C5BmPA _vA7_pGisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Actress"/>
+      </nodes>
+      <nodes xmi:id="_vA7_lWisEeOaeph0C5BmPA" name="movie1" incoming="_vA7_nmisEeOaeph0C5BmPA _vA7_oWisEeOaeph0C5BmPA _vA7_pmisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Movie"/>
+      </nodes>
+      <nodes xmi:id="_vA7_l2isEeOaeph0C5BmPA" name="movie2" incoming="_vA7_oGisEeOaeph0C5BmPA _vA7_o2isEeOaeph0C5BmPA _vA7_p2isEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Movie"/>
+      </nodes>
+      <nodes xmi:id="_vA7_mGisEeOaeph0C5BmPA" name="movie3" incoming="_vA7_nGisEeOaeph0C5BmPA _vA7_nWisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Movie"/>
+      </nodes>
+      <nodes xmi:id="_vA7_mWisEeOaeph0C5BmPA" name="movie4" incoming="_vA7_pGisEeOaeph0C5BmPA _vA7_pWisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Movie"/>
+      </nodes>
+      <nodes xmi:id="_vA7_mmisEeOaeph0C5BmPA" name="actor2" outgoing="_vA7_nGisEeOaeph0C5BmPA _vA7_pmisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Actor"/>
+      </nodes>
+      <nodes xmi:id="_vA7_m2isEeOaeph0C5BmPA" name="actress2" outgoing="_vA7_pWisEeOaeph0C5BmPA _vA7_p2isEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Actress"/>
+      </nodes>
+      <edges xmi:id="_vA7_nGisEeOaeph0C5BmPA" source="_vA7_mmisEeOaeph0C5BmPA" target="_vA7_mGisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_vA7_nWisEeOaeph0C5BmPA" source="_vA7_k2isEeOaeph0C5BmPA" target="_vA7_mGisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_vA7_nmisEeOaeph0C5BmPA" source="_vA7_k2isEeOaeph0C5BmPA" target="_vA7_lWisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_vA7_oGisEeOaeph0C5BmPA" source="_vA7_k2isEeOaeph0C5BmPA" target="_vA7_l2isEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_vA7_oWisEeOaeph0C5BmPA" source="_vA7_lGisEeOaeph0C5BmPA" target="_vA7_lWisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_vA7_o2isEeOaeph0C5BmPA" source="_vA7_lGisEeOaeph0C5BmPA" target="_vA7_l2isEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_vA7_pGisEeOaeph0C5BmPA" source="_vA7_lGisEeOaeph0C5BmPA" target="_vA7_mWisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_vA7_pWisEeOaeph0C5BmPA" source="_vA7_m2isEeOaeph0C5BmPA" target="_vA7_mWisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_vA7_pmisEeOaeph0C5BmPA" source="_vA7_mmisEeOaeph0C5BmPA" target="_vA7_lWisEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+      <edges xmi:id="_vA7_p2isEeOaeph0C5BmPA" source="_vA7_m2isEeOaeph0C5BmPA" target="_vA7_l2isEeOaeph0C5BmPA">
+        <type href="movies.ecore#//Person/movies"/>
+      </edges>
+    </rhs>
+  </units>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_edTa4Gi8EeOaeph0C5BmPA" name="createTest" subUnits="_gAkNIGirEeOaeph0C5BmPA _vA7_kGisEeOaeph0C5BmPA"/>
+  <units xsi:type="henshin:IteratedUnit" xmi:id="_EKLqMGitEeOaeph0C5BmPA" name="createExample" subUnit="_edTa4Gi8EeOaeph0C5BmPA" iterations="n">
+    <parameters xmi:id="_IlvPgGitEeOaeph0C5BmPA" name="n" kind="IN">
+      <type xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    </parameters>
+  </units>
+</henshin:Module>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/movies/movies.henshin_text b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/movies/movies.henshin_text
new file mode 100644
index 0000000..7d70e9e
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/movies/movies.henshin_text
@@ -0,0 +1,88 @@
+ePackageImport movies
+
+rule findCouples(){
+	graph{
+		multiRule multiFindCouples{
+			graph{
+				node first:Person
+				node second:Person
+				create node newNode:Couple
+				require node movie1:Movie
+				require node movie2:Movie
+				require node movie3:Movie
+				edges[(create newNode->first:p1),
+					(create newNode->second:p2),
+					(require second->movie3:movies),
+					(require first->movie3:movies),
+					(require first->movie2:movies),
+					(require second->movie2:movies),
+					(require first->movie1:movies),
+					(require second->movie1:movies)
+				]
+			}
+		} 
+	}
+}
+
+rule createPositive(){
+	graph{
+		create node actor1:Actor
+		create node actress1:Actress
+		create node movie1:Movie
+		create node movie2:Movie
+		create node movie3:Movie
+		create node movie4:Movie
+		create node movie5:Movie
+		create node actor2:Actor
+		create node actress2:Actress
+		
+		edges[(create actor2->movie4:movies),
+			(create actor1->movie4:movies),
+			(create actor1->movie1:movies),
+			(create actor1->movie2:movies),
+			(create actor1->movie3:movies),
+			(create actress1->movie1:movies),
+			(create actress1->movie2:movies),
+			(create actress1->movie3:movies),
+			(create actress1->movie5:movies),
+			(create actress2->movie5:movies),
+			(create actor2->movie1:movies),
+			(create actress2->movie3:movies)
+		]
+	}
+}
+
+rule createNegative(){
+	graph{
+		create node actor1:Actor
+		create node actress1:Actress
+		create node movie1:Movie
+		create node movie2:Movie
+		create node movie3:Movie
+		create node movie4:Movie
+		create node actor2:Actor
+		create node actress2:Actress
+		edges[(create actor2->movie3:movies),
+			(create actor1->movie3:movies),
+			(create actor1->movie1:movies),
+			(create actor1->movie2:movies),
+			(create actress1->movie1:movies),
+			(create actress1->movie2:movies),
+			(create actress1->movie4:movies),
+			(create actress2->movie4:movies),
+			(create actor2->movie1:movies),
+			(create actress2->movie2:movies)
+		]
+	}
+}
+
+unit createExample(IN n:EInt){
+	for(n){
+		createTest()
+	}
+}
+
+unit createTest(){
+	createPositive()
+	createNegative()
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/mutualexclusion/mutualexclusion.ecore b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/mutualexclusion/mutualexclusion.ecore
new file mode 100644
index 0000000..83ba68c
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/mutualexclusion/mutualexclusion.ecore
@@ -0,0 +1,21 @@
+<?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="mutualexclusion" nsURI="http://www.eclipse.org/emf/henshin/examples/mutualexclusion"
+    nsPrefix="mutualexclusion">
+  <eClassifiers xsi:type="ecore:EClass" name="Process">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="next" eType="#//Process"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="request" eType="#//Resource"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Resource">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="blocked" eType="#//Process"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="held_by" eType="#//Process"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="token" eType="#//Process"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="release" eType="#//Process"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Net">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="processes" upperBound="-1"
+        eType="#//Process" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="resources" upperBound="-1"
+        eType="#//Resource" containment="true"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/mutualexclusion/mutualexclusion.henshin b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/mutualexclusion/mutualexclusion.henshin
new file mode 100644
index 0000000..d155605
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/mutualexclusion/mutualexclusion.henshin
@@ -0,0 +1,873 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_WSiegJNwEeGo6JryyuuVRA" name="HenshinDSL">
+  <imports href="mutualexclusion.ecore#/"/>
+  <units xsi:type="henshin:Rule" xmi:id="_FyO4cJNxEeGo6JryyuuVRA" name="newRule">
+    <lhs xmi:id="_FyO4cZNxEeGo6JryyuuVRA" name="newRule_LHS">
+      <nodes xmi:id="_gJedcZQrEeGo6JryyuuVRA" name="root" outgoing="_gJ_a0JQrEeGo6JryyuuVRA _gKa4oJQrEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net"/>
+      </nodes>
+      <nodes xmi:id="_M-bZYJNxEeGo6JryyuuVRA" name="process1" incoming="_gJ_a0JQrEeGo6JryyuuVRA" outgoing="_bwr3UJNyEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_NSpV4JNxEeGo6JryyuuVRA" name="process2" incoming="_bwr3UJNyEeGo6JryyuuVRA _gKa4oJQrEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_bwr3UJNyEeGo6JryyuuVRA" source="_M-bZYJNxEeGo6JryyuuVRA" target="_NSpV4JNxEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/next"/>
+      </edges>
+      <edges xmi:id="_gJ_a0JQrEeGo6JryyuuVRA" source="_gJedcZQrEeGo6JryyuuVRA" target="_M-bZYJNxEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net/processes"/>
+      </edges>
+      <edges xmi:id="_gKa4oJQrEeGo6JryyuuVRA" source="_gJedcZQrEeGo6JryyuuVRA" target="_NSpV4JNxEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net/processes"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_FyO4cpNxEeGo6JryyuuVRA" name="newRule_RHS">
+      <nodes xmi:id="_gJj9AJQrEeGo6JryyuuVRA" name="root" outgoing="_gKM2MJQrEeGo6JryyuuVRA _gKo7EJQrEeGo6JryyuuVRA _gK29gJQrEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net"/>
+      </nodes>
+      <nodes xmi:id="_M-cngJNxEeGo6JryyuuVRA" name="process1" incoming="_gKM2MJQrEeGo6JryyuuVRA" outgoing="_Ql-SYJNyEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_NSqkAJNxEeGo6JryyuuVRA" name="process2" incoming="_OuaT0JNyEeGo6JryyuuVRA _gKo7EJQrEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_OSqocJNxEeGo6JryyuuVRA" name="newProcess" incoming="_Ql-SYJNyEeGo6JryyuuVRA _gK29gJQrEeGo6JryyuuVRA" outgoing="_OuaT0JNyEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_gKM2MJQrEeGo6JryyuuVRA" source="_gJj9AJQrEeGo6JryyuuVRA" target="_M-cngJNxEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net/processes"/>
+      </edges>
+      <edges xmi:id="_gKo7EJQrEeGo6JryyuuVRA" source="_gJj9AJQrEeGo6JryyuuVRA" target="_NSqkAJNxEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net/processes"/>
+      </edges>
+      <edges xmi:id="_OuaT0JNyEeGo6JryyuuVRA" source="_OSqocJNxEeGo6JryyuuVRA" target="_NSqkAJNxEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/next"/>
+      </edges>
+      <edges xmi:id="_Ql-SYJNyEeGo6JryyuuVRA" source="_M-cngJNxEeGo6JryyuuVRA" target="_OSqocJNxEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/next"/>
+      </edges>
+      <edges xmi:id="_gK29gJQrEeGo6JryyuuVRA" source="_gJj9AJQrEeGo6JryyuuVRA" target="_OSqocJNxEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net/processes"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_gJu8IJQrEeGo6JryyuuVRA" origin="_gJedcZQrEeGo6JryyuuVRA" image="_gJj9AJQrEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_M-dOkJNxEeGo6JryyuuVRA" origin="_M-bZYJNxEeGo6JryyuuVRA" image="_M-cngJNxEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_NSryIJNxEeGo6JryyuuVRA" origin="_NSpV4JNxEeGo6JryyuuVRA" image="_NSqkAJNxEeGo6JryyuuVRA"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_UZccoJN1EeGo6JryyuuVRA" name="mountRule">
+    <lhs xmi:id="_UZccoZN1EeGo6JryyuuVRA" name="mountRule_LHS">
+      <nodes xmi:id="_wnMNEJQrEeGo6JryyuuVRA" name="root" outgoing="_wnknkJQrEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net"/>
+      </nodes>
+      <nodes xmi:id="_XMgaIJN1EeGo6JryyuuVRA" name="process" incoming="_wnknkJQrEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_wnknkJQrEeGo6JryyuuVRA" source="_wnMNEJQrEeGo6JryyuuVRA" target="_XMgaIJN1EeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net/processes"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_UZccopN1EeGo6JryyuuVRA" name="mountRule_RHS">
+      <nodes xmi:id="_wnRFkJQrEeGo6JryyuuVRA" name="root" outgoing="_wnyC8JQrEeGo6JryyuuVRA _wn-3QJQrEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net"/>
+      </nodes>
+      <nodes xmi:id="_XMhBMJN1EeGo6JryyuuVRA" name="process" incoming="_uF66gJN4EeGo6JryyuuVRA _wnyC8JQrEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_Xlb3gJN1EeGo6JryyuuVRA" name="newResource" incoming="_wn-3QJQrEeGo6JryyuuVRA" outgoing="_uF66gJN4EeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <edges xmi:id="_wnyC8JQrEeGo6JryyuuVRA" source="_wnRFkJQrEeGo6JryyuuVRA" target="_XMhBMJN1EeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net/processes"/>
+      </edges>
+      <edges xmi:id="_uF66gJN4EeGo6JryyuuVRA" source="_Xlb3gJN1EeGo6JryyuuVRA" target="_XMhBMJN1EeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/token"/>
+      </edges>
+      <edges xmi:id="_wn-3QJQrEeGo6JryyuuVRA" source="_wnRFkJQrEeGo6JryyuuVRA" target="_Xlb3gJN1EeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Net/resources"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_wna2kJQrEeGo6JryyuuVRA" origin="_wnMNEJQrEeGo6JryyuuVRA" image="_wnRFkJQrEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_XMhBMZN1EeGo6JryyuuVRA" origin="_XMgaIJN1EeGo6JryyuuVRA" image="_XMhBMJN1EeGo6JryyuuVRA"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_gOn9cJPOEeGo6JryyuuVRA" name="requestRule">
+    <lhs xmi:id="_gOn9cZPOEeGo6JryyuuVRA" name="requestRule_LHS">
+      <nodes xmi:id="_x681QJPOEeGo6JryyuuVRA" name="resource">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+    </lhs>
+    <rhs xmi:id="_gOn9cpPOEeGo6JryyuuVRA" name="requestRule_RHS">
+      <nodes xmi:id="_x69cUJPOEeGo6JryyuuVRA" name="resource">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+    </rhs>
+    <mappings xmi:id="_x69cUZPOEeGo6JryyuuVRA" origin="_x681QJPOEeGo6JryyuuVRA" image="_x69cUJPOEeGo6JryyuuVRA"/>
+    <multiRules xmi:id="_2SMLkJQsEeGo6JryyuuVRA" name="multiRequestRule">
+      <lhs xmi:id="_2SMLkZQsEeGo6JryyuuVRA" name="multiRequestRule_LHS">
+        <nodes xmi:id="_yYV74JPOEeGo6JryyuuVRA" name="process">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <nodes xmi:id="_2S1r0JQsEeGo6JryyuuVRA" name="resource">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <formula xsi:type="henshin:Not" xmi:id="_rbEbkJQtEeGo6JryyuuVRA">
+          <child xsi:type="henshin:NestedCondition" xmi:id="_tq4iEJQtEeGo6JryyuuVRA">
+            <conclusion xmi:id="_uXKZQJQtEeGo6JryyuuVRA" name="forbid">
+              <nodes xmi:id="_7dR68JQtEeGo6JryyuuVRA" name="m" incoming="_fCpQ4JQuEeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Resource"/>
+              </nodes>
+              <nodes xmi:id="_6QZREJQtEeGo6JryyuuVRA" name="resource" outgoing="_a0KeQJQuEeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Resource"/>
+              </nodes>
+              <nodes xmi:id="_3YYiIJQtEeGo6JryyuuVRA" name="process" incoming="_a0KeQJQuEeGo6JryyuuVRA" outgoing="_fCpQ4JQuEeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Process"/>
+              </nodes>
+              <edges xmi:id="_a0KeQJQuEeGo6JryyuuVRA" source="_6QZREJQtEeGo6JryyuuVRA" target="_3YYiIJQtEeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Resource/held_by"/>
+              </edges>
+              <edges xmi:id="_fCpQ4JQuEeGo6JryyuuVRA" source="_3YYiIJQtEeGo6JryyuuVRA" target="_7dR68JQtEeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Process/request"/>
+              </edges>
+            </conclusion>
+            <mappings xmi:id="_TIfMAJQuEeGo6JryyuuVRA" origin="_2S1r0JQsEeGo6JryyuuVRA" image="_6QZREJQtEeGo6JryyuuVRA"/>
+            <mappings xmi:id="_Lc-44JQuEeGo6JryyuuVRA" origin="_yYV74JPOEeGo6JryyuuVRA" image="_3YYiIJQtEeGo6JryyuuVRA"/>
+          </child>
+        </formula>
+      </lhs>
+      <rhs xmi:id="_2SMLkpQsEeGo6JryyuuVRA" name="multiRequestRule_RHS">
+        <nodes xmi:id="_yYWi8JPOEeGo6JryyuuVRA" name="process" outgoing="_5lVuEJPOEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <nodes xmi:id="_2SefcJQsEeGo6JryyuuVRA" name="resource" incoming="_5lVuEJPOEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <edges xmi:id="_5lVuEJPOEeGo6JryyuuVRA" source="_yYWi8JPOEeGo6JryyuuVRA" target="_2SefcJQsEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process/request"/>
+        </edges>
+      </rhs>
+      <mappings xmi:id="_yYWi8ZPOEeGo6JryyuuVRA" origin="_yYV74JPOEeGo6JryyuuVRA" image="_yYWi8JPOEeGo6JryyuuVRA"/>
+      <mappings xmi:id="_2TAD4ZQsEeGo6JryyuuVRA" origin="_2S1r0JQsEeGo6JryyuuVRA" image="_2SefcJQsEeGo6JryyuuVRA"/>
+      <multiMappings xmi:id="_2S1r0ZQsEeGo6JryyuuVRA" origin="_x681QJPOEeGo6JryyuuVRA" image="_2S1r0JQsEeGo6JryyuuVRA"/>
+      <multiMappings xmi:id="_2SefcZQsEeGo6JryyuuVRA" origin="_x69cUJPOEeGo6JryyuuVRA" image="_2SefcJQsEeGo6JryyuuVRA"/>
+    </multiRules>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_ARAU0JPPEeGo6JryyuuVRA" name="takeRule">
+    <lhs xmi:id="_ARAU0ZPPEeGo6JryyuuVRA" name="takeRule_LHS">
+      <nodes xmi:id="_I4S6wJPPEeGo6JryyuuVRA" name="process" incoming="_UAGVoJPPEeGo6JryyuuVRA" outgoing="_MLcGgJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_JNu_QJPPEeGo6JryyuuVRA" name="resource" incoming="_MLcGgJPPEeGo6JryyuuVRA" outgoing="_UAGVoJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <edges xmi:id="_MLcGgJPPEeGo6JryyuuVRA" source="_I4S6wJPPEeGo6JryyuuVRA" target="_JNu_QJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/request"/>
+      </edges>
+      <edges xmi:id="_UAGVoJPPEeGo6JryyuuVRA" source="_JNu_QJPPEeGo6JryyuuVRA" target="_I4S6wJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/token"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_ARAU0pPPEeGo6JryyuuVRA" name="takeRule_RHS">
+      <nodes xmi:id="_I4Th0JPPEeGo6JryyuuVRA" name="process" incoming="_OSvxQJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_JNvmUJPPEeGo6JryyuuVRA" name="resource" outgoing="_OSvxQJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <edges xmi:id="_OSvxQJPPEeGo6JryyuuVRA" source="_JNvmUJPPEeGo6JryyuuVRA" target="_I4Th0JPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/held_by"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_I4Th0ZPPEeGo6JryyuuVRA" origin="_I4S6wJPPEeGo6JryyuuVRA" image="_I4Th0JPPEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_JNwNYJPPEeGo6JryyuuVRA" origin="_JNu_QJPPEeGo6JryyuuVRA" image="_JNvmUJPPEeGo6JryyuuVRA"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_e6MEoJPPEeGo6JryyuuVRA" name="releaseRule">
+    <lhs xmi:id="_e6MEoZPPEeGo6JryyuuVRA" name="releaseRule_LHS">
+      <nodes xmi:id="_kp71sJPPEeGo6JryyuuVRA" name="process" incoming="_mSjZUJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_hiMBoJPPEeGo6JryyuuVRA" name="resource" description="" outgoing="_mSjZUJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <edges xmi:id="_mSjZUJPPEeGo6JryyuuVRA" source="_hiMBoJPPEeGo6JryyuuVRA" target="_kp71sJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/held_by"/>
+      </edges>
+      <formula xsi:type="henshin:Not" xmi:id="_t7CNoJPPEeGo6JryyuuVRA">
+        <child xsi:type="henshin:NestedCondition" xmi:id="_t7CNoZPPEeGo6JryyuuVRA">
+          <conclusion xmi:id="_t7CNopPPEeGo6JryyuuVRA" name="default">
+            <nodes xmi:id="_qmVisJPPEeGo6JryyuuVRA" name="forbidResource" incoming="_sG5WgJPPEeGo6JryyuuVRA">
+              <type href="mutualexclusion.ecore#//Resource"/>
+            </nodes>
+            <nodes xmi:id="_zn-7MJREEeGo6JryyuuVRA" name="resource">
+              <type href="mutualexclusion.ecore#//Resource"/>
+            </nodes>
+            <nodes xmi:id="_t7DbwJPPEeGo6JryyuuVRA" name="process" outgoing="_sG5WgJPPEeGo6JryyuuVRA">
+              <type href="mutualexclusion.ecore#//Process"/>
+            </nodes>
+            <edges xmi:id="_sG5WgJPPEeGo6JryyuuVRA" source="_t7DbwJPPEeGo6JryyuuVRA" target="_qmVisJPPEeGo6JryyuuVRA">
+              <type href="mutualexclusion.ecore#//Process/request"/>
+            </edges>
+          </conclusion>
+          <mappings xmi:id="_zoDzsJREEeGo6JryyuuVRA" origin="_hiMBoJPPEeGo6JryyuuVRA" image="_zn-7MJREEeGo6JryyuuVRA"/>
+          <mappings xmi:id="_t7DbwZPPEeGo6JryyuuVRA" origin="_kp71sJPPEeGo6JryyuuVRA" image="_t7DbwJPPEeGo6JryyuuVRA"/>
+        </child>
+      </formula>
+    </lhs>
+    <rhs xmi:id="_e6MEopPPEeGo6JryyuuVRA" name="releaseRule_RHS">
+      <nodes xmi:id="_kqAuMJPPEeGo6JryyuuVRA" name="process" incoming="_o6H4gJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_hiMBoZPPEeGo6JryyuuVRA" name="resource" outgoing="_o6H4gJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <edges xmi:id="_o6H4gJPPEeGo6JryyuuVRA" source="_hiMBoZPPEeGo6JryyuuVRA" target="_kqAuMJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/release"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_kqBVQJPPEeGo6JryyuuVRA" origin="_kp71sJPPEeGo6JryyuuVRA" image="_kqAuMJPPEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_hiMBopPPEeGo6JryyuuVRA" origin="_hiMBoJPPEeGo6JryyuuVRA" image="_hiMBoZPPEeGo6JryyuuVRA"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_yUzDMJPPEeGo6JryyuuVRA" name="giveRule">
+    <lhs xmi:id="_yUzDMZPPEeGo6JryyuuVRA" name="giveRule_LHS">
+      <nodes xmi:id="_1tjHsJPPEeGo6JryyuuVRA" name="resource" outgoing="_6WaJMJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_223gMJPPEeGo6JryyuuVRA" name="process1" incoming="_6WaJMJPPEeGo6JryyuuVRA" outgoing="_4fHQYJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_38IfIJPPEeGo6JryyuuVRA" name="process2" incoming="_4fHQYJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_4fHQYJPPEeGo6JryyuuVRA" source="_223gMJPPEeGo6JryyuuVRA" target="_38IfIJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/next"/>
+      </edges>
+      <edges xmi:id="_6WaJMJPPEeGo6JryyuuVRA" source="_1tjHsJPPEeGo6JryyuuVRA" target="_223gMJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/release"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_yUzDMpPPEeGo6JryyuuVRA" name="giveRule_RHS">
+      <nodes xmi:id="_1tjHsZPPEeGo6JryyuuVRA" name="resource" outgoing="_8fk1IJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_223gMZPPEeGo6JryyuuVRA" name="process1" outgoing="_4fIegJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_38JGMJPPEeGo6JryyuuVRA" name="process2" incoming="_4fIegJPPEeGo6JryyuuVRA _8fk1IJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_4fIegJPPEeGo6JryyuuVRA" source="_223gMZPPEeGo6JryyuuVRA" target="_38JGMJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/next"/>
+      </edges>
+      <edges xmi:id="_8fk1IJPPEeGo6JryyuuVRA" source="_1tjHsZPPEeGo6JryyuuVRA" target="_38JGMJPPEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/token"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_1tjHspPPEeGo6JryyuuVRA" origin="_1tjHsJPPEeGo6JryyuuVRA" image="_1tjHsZPPEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_224HQJPPEeGo6JryyuuVRA" origin="_223gMJPPEeGo6JryyuuVRA" image="_223gMZPPEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_38JtQJPPEeGo6JryyuuVRA" origin="_38IfIJPPEeGo6JryyuuVRA" image="_38JGMJPPEeGo6JryyuuVRA"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_kgnFIJPQEeGo6JryyuuVRA" name="requestStarRule">
+    <lhs xmi:id="_kgnFIZPQEeGo6JryyuuVRA" name="requestStarRule_LHS"/>
+    <rhs xmi:id="_kgnFIpPQEeGo6JryyuuVRA" name="requestStarRule_RHS"/>
+    <multiRules xmi:id="_KFg_gJUGEeGOraTCkW0kpg" name="multiRequestStarRule">
+      <lhs xmi:id="_KFg_gZUGEeGOraTCkW0kpg" name="multiRequestStarRule_LHS">
+        <nodes xmi:id="_nWaNkJPQEeGo6JryyuuVRA" name="resource1" outgoing="_3PK2AJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_pJYAAJPQEeGo6JryyuuVRA" name="process1" incoming="_pl3HsJPQEeGo6JryyuuVRA _3PK2AJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <nodes xmi:id="_oAg6gJPQEeGo6JryyuuVRA" name="resource2" outgoing="_7hPIIJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_os11AJPQEeGo6JryyuuVRA" name="process2" incoming="_7hPIIJPQEeGo6JryyuuVRA" outgoing="_pl3HsJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <edges xmi:id="_pl3HsJPQEeGo6JryyuuVRA" source="_os11AJPQEeGo6JryyuuVRA" target="_pJYAAJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process/next"/>
+        </edges>
+        <edges xmi:id="_3PK2AJPQEeGo6JryyuuVRA" source="_nWaNkJPQEeGo6JryyuuVRA" target="_pJYAAJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/held_by"/>
+        </edges>
+        <edges xmi:id="_7hPIIJPQEeGo6JryyuuVRA" source="_oAg6gJPQEeGo6JryyuuVRA" target="_os11AJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/held_by"/>
+        </edges>
+        <formula xsi:type="henshin:Not" xmi:id="_CkjZ4JPREeGo6JryyuuVRA">
+          <child xsi:type="henshin:NestedCondition" xmi:id="_CkjZ4ZPREeGo6JryyuuVRA">
+            <conclusion xmi:id="_CkjZ4pPREeGo6JryyuuVRA" name="forbid" description="">
+              <nodes xmi:id="_CkkoAJPREeGo6JryyuuVRA" name="process1" outgoing="_A1l9sJPREeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Process"/>
+              </nodes>
+              <nodes xmi:id="_CklPEZPREeGo6JryyuuVRA" name="resource2" incoming="_A1l9sJPREeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Resource"/>
+              </nodes>
+              <edges xmi:id="_A1l9sJPREeGo6JryyuuVRA" source="_CkkoAJPREeGo6JryyuuVRA" target="_CklPEZPREeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Process/request"/>
+              </edges>
+            </conclusion>
+            <mappings xmi:id="_CklPEJPREeGo6JryyuuVRA" origin="_pJYAAJPQEeGo6JryyuuVRA" image="_CkkoAJPREeGo6JryyuuVRA"/>
+            <mappings xmi:id="_CklPEpPREeGo6JryyuuVRA" origin="_oAg6gJPQEeGo6JryyuuVRA" image="_CklPEZPREeGo6JryyuuVRA"/>
+          </child>
+        </formula>
+      </lhs>
+      <rhs xmi:id="_KFg_gpUGEeGOraTCkW0kpg" name="multiRequestStarRule_RHS">
+        <nodes xmi:id="_nWaNkZPQEeGo6JryyuuVRA" name="resource1" outgoing="_3PN5UJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_pJYnEJPQEeGo6JryyuuVRA" name="process1" incoming="_pl484JPQEeGo6JryyuuVRA _3PN5UJPQEeGo6JryyuuVRA" outgoing="_A1sEUJPREeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <nodes xmi:id="_oAhhkJPQEeGo6JryyuuVRA" name="resource2" incoming="_A1sEUJPREeGo6JryyuuVRA" outgoing="_7hUnsJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_os2cEJPQEeGo6JryyuuVRA" name="process2" incoming="_7hUnsJPQEeGo6JryyuuVRA" outgoing="_pl484JPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <edges xmi:id="_pl484JPQEeGo6JryyuuVRA" source="_os2cEJPQEeGo6JryyuuVRA" target="_pJYnEJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process/next"/>
+        </edges>
+        <edges xmi:id="_3PN5UJPQEeGo6JryyuuVRA" source="_nWaNkZPQEeGo6JryyuuVRA" target="_pJYnEJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/held_by"/>
+        </edges>
+        <edges xmi:id="_7hUnsJPQEeGo6JryyuuVRA" source="_oAhhkJPQEeGo6JryyuuVRA" target="_os2cEJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/held_by"/>
+        </edges>
+        <edges xmi:id="_A1sEUJPREeGo6JryyuuVRA" source="_pJYnEJPQEeGo6JryyuuVRA" target="_oAhhkJPQEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process/request"/>
+        </edges>
+      </rhs>
+      <mappings xmi:id="_nWa0oJPQEeGo6JryyuuVRA" origin="_nWaNkJPQEeGo6JryyuuVRA" image="_nWaNkZPQEeGo6JryyuuVRA"/>
+      <mappings xmi:id="_pJZOIJPQEeGo6JryyuuVRA" origin="_pJYAAJPQEeGo6JryyuuVRA" image="_pJYnEJPQEeGo6JryyuuVRA"/>
+      <mappings xmi:id="_oAiIoJPQEeGo6JryyuuVRA" origin="_oAg6gJPQEeGo6JryyuuVRA" image="_oAhhkJPQEeGo6JryyuuVRA"/>
+      <mappings xmi:id="_os3DIJPQEeGo6JryyuuVRA" origin="_os11AJPQEeGo6JryyuuVRA" image="_os2cEJPQEeGo6JryyuuVRA"/>
+    </multiRules>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_PgCY4JPREeGo6JryyuuVRA" name="blockedRule">
+    <lhs xmi:id="_PgC_8JPREeGo6JryyuuVRA" name="blockedRule_LHS">
+      <nodes xmi:id="_UvzpYJPREeGo6JryyuuVRA" name="process1" outgoing="_ZTSboJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_VQJ9YJPREeGo6JryyuuVRA" name="resource" incoming="_ZTSboJPREeGo6JryyuuVRA" outgoing="_eeXZYJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_V9UlYJPREeGo6JryyuuVRA" name="process2" incoming="_eeXZYJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_ZTSboJPREeGo6JryyuuVRA" source="_UvzpYJPREeGo6JryyuuVRA" target="_VQJ9YJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/request"/>
+      </edges>
+      <edges xmi:id="_eeXZYJPREeGo6JryyuuVRA" source="_VQJ9YJPREeGo6JryyuuVRA" target="_V9UlYJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/held_by"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_PgC_8ZPREeGo6JryyuuVRA" name="blockedRule_RHS">
+      <nodes xmi:id="_Uv0QcJPREeGo6JryyuuVRA" name="process1" incoming="_cTDYYJPREeGo6JryyuuVRA" outgoing="_ZTWGAJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_VQKkcJPREeGo6JryyuuVRA" name="resource" incoming="_ZTWGAJPREeGo6JryyuuVRA" outgoing="_cTDYYJPREeGo6JryyuuVRA _eebq0JPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_V9VMcJPREeGo6JryyuuVRA" name="process2" incoming="_eebq0JPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_ZTWGAJPREeGo6JryyuuVRA" source="_Uv0QcJPREeGo6JryyuuVRA" target="_VQKkcJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/request"/>
+      </edges>
+      <edges xmi:id="_eebq0JPREeGo6JryyuuVRA" source="_VQKkcJPREeGo6JryyuuVRA" target="_V9VMcJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/held_by"/>
+      </edges>
+      <edges xmi:id="_cTDYYJPREeGo6JryyuuVRA" source="_VQKkcJPREeGo6JryyuuVRA" target="_Uv0QcJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/blocked"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_Uv03gJPREeGo6JryyuuVRA" origin="_UvzpYJPREeGo6JryyuuVRA" image="_Uv0QcJPREeGo6JryyuuVRA"/>
+    <mappings xmi:id="_VQLLgJPREeGo6JryyuuVRA" origin="_VQJ9YJPREeGo6JryyuuVRA" image="_VQKkcJPREeGo6JryyuuVRA"/>
+    <mappings xmi:id="_V9VzgJPREeGo6JryyuuVRA" origin="_V9UlYJPREeGo6JryyuuVRA" image="_V9VMcJPREeGo6JryyuuVRA"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_lNuNUJPREeGo6JryyuuVRA" name="waitingRule">
+    <lhs xmi:id="_lNuNUZPREeGo6JryyuuVRA" name="waitingRule_LHS">
+      <nodes xmi:id="_oULA4JPREeGo6JryyuuVRA" name="process1" outgoing="_2BbbEJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_pEr30JPREeGo6JryyuuVRA" name="resource1" incoming="_2BbbEJPREeGo6JryyuuVRA" outgoing="_tB-z0JPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_peF2UJPREeGo6JryyuuVRA" name="process2" incoming="_tB-z0JPREeGo6JryyuuVRA _u1kRUJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_p-6EYJPREeGo6JryyuuVRA" name="resource2" outgoing="_u1kRUJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <edges xmi:id="_tB-z0JPREeGo6JryyuuVRA" source="_pEr30JPREeGo6JryyuuVRA" target="_peF2UJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/held_by"/>
+      </edges>
+      <edges xmi:id="_2BbbEJPREeGo6JryyuuVRA" source="_oULA4JPREeGo6JryyuuVRA" target="_pEr30JPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/request"/>
+      </edges>
+      <edges xmi:id="_u1kRUJPREeGo6JryyuuVRA" source="_p-6EYJPREeGo6JryyuuVRA" target="_peF2UJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/blocked"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_lNuNUpPREeGo6JryyuuVRA" name="waitingRule_RHS">
+      <nodes xmi:id="_oULA4ZPREeGo6JryyuuVRA" name="process1" incoming="_-x7nYJPREeGo6JryyuuVRA" outgoing="_2BfsgJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_pEse4JPREeGo6JryyuuVRA" name="resource1" incoming="_2BfsgJPREeGo6JryyuuVRA" outgoing="_tCApAJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_peF2UZPREeGo6JryyuuVRA" name="process2" incoming="_tCApAJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_p-6rcJPREeGo6JryyuuVRA" name="resource2" outgoing="_-x7nYJPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <edges xmi:id="_tCApAJPREeGo6JryyuuVRA" source="_pEse4JPREeGo6JryyuuVRA" target="_peF2UZPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/held_by"/>
+      </edges>
+      <edges xmi:id="_2BfsgJPREeGo6JryyuuVRA" source="_oULA4ZPREeGo6JryyuuVRA" target="_pEse4JPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/request"/>
+      </edges>
+      <edges xmi:id="_-x7nYJPREeGo6JryyuuVRA" source="_p-6rcJPREeGo6JryyuuVRA" target="_oULA4ZPREeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/blocked"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_oULn8JPREeGo6JryyuuVRA" origin="_oULA4JPREeGo6JryyuuVRA" image="_oULA4ZPREeGo6JryyuuVRA"/>
+    <mappings xmi:id="_pEtF8JPREeGo6JryyuuVRA" origin="_pEr30JPREeGo6JryyuuVRA" image="_pEse4JPREeGo6JryyuuVRA"/>
+    <mappings xmi:id="_peGdYJPREeGo6JryyuuVRA" origin="_peF2UJPREeGo6JryyuuVRA" image="_peF2UZPREeGo6JryyuuVRA"/>
+    <mappings xmi:id="_p-7SgJPREeGo6JryyuuVRA" origin="_p-6EYJPREeGo6JryyuuVRA" image="_p-6rcJPREeGo6JryyuuVRA"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_H_HIoJPSEeGo6JryyuuVRA" name="unlockRule">
+    <lhs xmi:id="_H_HIoZPSEeGo6JryyuuVRA" name="unlockRule_LHS">
+      <nodes xmi:id="_K-_aIJPSEeGo6JryyuuVRA" name="resource" outgoing="_PTbq0JPSEeGo6JryyuuVRA _Uhm_4JPSEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_Lr7YoJPSEeGo6JryyuuVRA" name="process" incoming="_PTbq0JPSEeGo6JryyuuVRA _Uhm_4JPSEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_PTbq0JPSEeGo6JryyuuVRA" source="_K-_aIJPSEeGo6JryyuuVRA" target="_Lr7YoJPSEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/blocked"/>
+      </edges>
+      <edges xmi:id="_Uhm_4JPSEeGo6JryyuuVRA" source="_K-_aIJPSEeGo6JryyuuVRA" target="_Lr7YoJPSEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/held_by"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_H_HIopPSEeGo6JryyuuVRA" name="unlockRule_RHS">
+      <nodes xmi:id="_K-_aIZPSEeGo6JryyuuVRA" name="resource" outgoing="_SYy5QJPSEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_Lr7YoZPSEeGo6JryyuuVRA" name="process" incoming="_SYy5QJPSEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_SYy5QJPSEeGo6JryyuuVRA" source="_K-_aIZPSEeGo6JryyuuVRA" target="_Lr7YoZPSEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/release"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_K-_aIpPSEeGo6JryyuuVRA" origin="_K-_aIJPSEeGo6JryyuuVRA" image="_K-_aIZPSEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_Lr7YopPSEeGo6JryyuuVRA" origin="_Lr7YoJPSEeGo6JryyuuVRA" image="_Lr7YoZPSEeGo6JryyuuVRA"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_L7tEkJPTEeGo6JryyuuVRA" name="ignoreRule">
+    <lhs xmi:id="_L7tEkZPTEeGo6JryyuuVRA" name="ignoreRule_LHS">
+      <nodes xmi:id="_Sgm8AJPTEeGo6JryyuuVRA" name="resource" outgoing="_fYgbgJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_TdHnkJPTEeGo6JryyuuVRA" name="process" incoming="_fYgbgJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_fYgbgJPTEeGo6JryyuuVRA" source="_Sgm8AJPTEeGo6JryyuuVRA" target="_TdHnkJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/blocked"/>
+      </edges>
+      <formula xsi:type="henshin:Not" xmi:id="_nwUbAJPTEeGo6JryyuuVRA">
+        <child xsi:type="henshin:NestedCondition" xmi:id="_nwUbAZPTEeGo6JryyuuVRA">
+          <conclusion xmi:id="_nwUbApPTEeGo6JryyuuVRA" name="default">
+            <nodes xmi:id="_kwvEcJPTEeGo6JryyuuVRA" name="forbidResource" outgoing="_mIzDkJPTEeGo6JryyuuVRA">
+              <type href="mutualexclusion.ecore#//Resource"/>
+            </nodes>
+            <nodes xmi:id="__QW3EJRFEeGo6JryyuuVRA" name="resource">
+              <type href="mutualexclusion.ecore#//Resource"/>
+            </nodes>
+            <nodes xmi:id="_nwVCEJPTEeGo6JryyuuVRA" name="process" incoming="_mIzDkJPTEeGo6JryyuuVRA">
+              <type href="mutualexclusion.ecore#//Process"/>
+            </nodes>
+            <edges xmi:id="_mIzDkJPTEeGo6JryyuuVRA" source="_kwvEcJPTEeGo6JryyuuVRA" target="_nwVCEJPTEeGo6JryyuuVRA">
+              <type href="mutualexclusion.ecore#//Resource/held_by"/>
+            </edges>
+          </conclusion>
+          <mappings xmi:id="__QZ6YJRFEeGo6JryyuuVRA" origin="_Sgm8AJPTEeGo6JryyuuVRA" image="__QW3EJRFEeGo6JryyuuVRA"/>
+          <mappings xmi:id="_nwVpIJPTEeGo6JryyuuVRA" origin="_TdHnkJPTEeGo6JryyuuVRA" image="_nwVCEJPTEeGo6JryyuuVRA"/>
+        </child>
+      </formula>
+    </lhs>
+    <rhs xmi:id="_L7tEkpPTEeGo6JryyuuVRA" name="ignoreRule_RHS">
+      <nodes xmi:id="_Sgm8AZPTEeGo6JryyuuVRA" name="resource">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_TdHnkZPTEeGo6JryyuuVRA" name="process">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+    </rhs>
+    <mappings xmi:id="_SgnjEJPTEeGo6JryyuuVRA" origin="_Sgm8AJPTEeGo6JryyuuVRA" image="_Sgm8AZPTEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_TdIOoJPTEeGo6JryyuuVRA" origin="_TdHnkJPTEeGo6JryyuuVRA" image="_TdHnkZPTEeGo6JryyuuVRA"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_vcFz4JPTEeGo6JryyuuVRA" name="releaseStarRule">
+    <lhs xmi:id="_vcFz4ZPTEeGo6JryyuuVRA" name="releaseStarRule_LHS">
+      <nodes xmi:id="_yg8E8JPTEeGo6JryyuuVRA" name="process1" incoming="_6dTekJPTEeGo6JryyuuVRA _ACSKEJPUEeGo6JryyuuVRA" outgoing="_0YNIkJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_y0i9cJPTEeGo6JryyuuVRA" name="resource1" outgoing="_6dTekJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_zeR28JPTEeGo6JryyuuVRA" name="resource2" incoming="_4MNlsJPTEeGo6JryyuuVRA" outgoing="_ACSKEJPUEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_z8yX4JPTEeGo6JryyuuVRA" name="process2" incoming="_0YNIkJPTEeGo6JryyuuVRA" outgoing="_4MNlsJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_0YNIkJPTEeGo6JryyuuVRA" source="_yg8E8JPTEeGo6JryyuuVRA" target="_z8yX4JPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/next"/>
+      </edges>
+      <edges xmi:id="_4MNlsJPTEeGo6JryyuuVRA" source="_z8yX4JPTEeGo6JryyuuVRA" target="_zeR28JPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/request"/>
+      </edges>
+      <edges xmi:id="_6dTekJPTEeGo6JryyuuVRA" source="_y0i9cJPTEeGo6JryyuuVRA" target="_yg8E8JPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/held_by"/>
+      </edges>
+      <edges xmi:id="_ACSKEJPUEeGo6JryyuuVRA" source="_zeR28JPTEeGo6JryyuuVRA" target="_yg8E8JPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/held_by"/>
+      </edges>
+    </lhs>
+    <rhs xmi:id="_vcFz4pPTEeGo6JryyuuVRA" name="releaseStarRule_RHS">
+      <nodes xmi:id="_yg8sAJPTEeGo6JryyuuVRA" name="process1" incoming="_6dYXEJPTEeGo6JryyuuVRA _8KeLAJPTEeGo6JryyuuVRA" outgoing="_0YO9wJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <nodes xmi:id="_y0jkgJPTEeGo6JryyuuVRA" name="resource1" outgoing="_6dYXEJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_zeR28ZPTEeGo6JryyuuVRA" name="resource2" incoming="_4MRQEJPTEeGo6JryyuuVRA" outgoing="_8KeLAJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_z8y-8JPTEeGo6JryyuuVRA" name="process2" incoming="_0YO9wJPTEeGo6JryyuuVRA" outgoing="_4MRQEJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_0YO9wJPTEeGo6JryyuuVRA" source="_yg8sAJPTEeGo6JryyuuVRA" target="_z8y-8JPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/next"/>
+      </edges>
+      <edges xmi:id="_4MRQEJPTEeGo6JryyuuVRA" source="_z8y-8JPTEeGo6JryyuuVRA" target="_zeR28ZPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Process/request"/>
+      </edges>
+      <edges xmi:id="_6dYXEJPTEeGo6JryyuuVRA" source="_y0jkgJPTEeGo6JryyuuVRA" target="_yg8sAJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/held_by"/>
+      </edges>
+      <edges xmi:id="_8KeLAJPTEeGo6JryyuuVRA" source="_zeR28ZPTEeGo6JryyuuVRA" target="_yg8sAJPTEeGo6JryyuuVRA">
+        <type href="mutualexclusion.ecore#//Resource/release"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_yg8sAZPTEeGo6JryyuuVRA" origin="_yg8E8JPTEeGo6JryyuuVRA" image="_yg8sAJPTEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_y0jkgZPTEeGo6JryyuuVRA" origin="_y0i9cJPTEeGo6JryyuuVRA" image="_y0jkgJPTEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_zeSeAJPTEeGo6JryyuuVRA" origin="_zeR28JPTEeGo6JryyuuVRA" image="_zeR28ZPTEeGo6JryyuuVRA"/>
+    <mappings xmi:id="_z8zmAJPTEeGo6JryyuuVRA" origin="_z8yX4JPTEeGo6JryyuuVRA" image="_z8y-8JPTEeGo6JryyuuVRA"/>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_HS6poJPVEeGo6JryyuuVRA" name="requestSimpleRule">
+    <lhs xmi:id="_HS6poZPVEeGo6JryyuuVRA" name="requestSimpleRule_LHS"/>
+    <rhs xmi:id="_HS6popPVEeGo6JryyuuVRA" name="requestSimpleRule_RHS"/>
+    <multiRules xmi:id="_28NX4JT7EeGOraTCkW0kpg" name="multiRequestSimpleRule">
+      <lhs xmi:id="_28N-8JT7EeGOraTCkW0kpg" name="multiRequestSimpleRule_LHS">
+        <nodes xmi:id="_Ly2_sJPVEeGo6JryyuuVRA" name="resource" outgoing="_ikwDIJPVEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_OgcnUJPVEeGo6JryyuuVRA" name="process" incoming="_ikwDIJPVEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <edges xmi:id="_ikwDIJPVEeGo6JryyuuVRA" source="_Ly2_sJPVEeGo6JryyuuVRA" target="_OgcnUJPVEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/token"/>
+        </edges>
+        <formula xsi:type="henshin:Not" xmi:id="_uAOn8JPVEeGo6JryyuuVRA">
+          <child xsi:type="henshin:NestedCondition" xmi:id="_uAOn8ZPVEeGo6JryyuuVRA">
+            <conclusion xmi:id="_uAOn8pPVEeGo6JryyuuVRA" name="forbid">
+              <nodes xmi:id="_uAP2EJPVEeGo6JryyuuVRA" name="process" outgoing="_kXXQQJPVEeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Process"/>
+              </nodes>
+              <nodes xmi:id="_uAQdIZPVEeGo6JryyuuVRA" name="resource" incoming="_kXXQQJPVEeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Resource"/>
+              </nodes>
+              <edges xmi:id="_kXXQQJPVEeGo6JryyuuVRA" source="_uAP2EJPVEeGo6JryyuuVRA" target="_uAQdIZPVEeGo6JryyuuVRA">
+                <type href="mutualexclusion.ecore#//Process/request"/>
+              </edges>
+            </conclusion>
+            <mappings xmi:id="_uAQdIJPVEeGo6JryyuuVRA" origin="_OgcnUJPVEeGo6JryyuuVRA" image="_uAP2EJPVEeGo6JryyuuVRA"/>
+            <mappings xmi:id="_uAQdIpPVEeGo6JryyuuVRA" origin="_Ly2_sJPVEeGo6JryyuuVRA" image="_uAQdIZPVEeGo6JryyuuVRA"/>
+          </child>
+        </formula>
+      </lhs>
+      <rhs xmi:id="_28N-8ZT7EeGOraTCkW0kpg" name="multiRequestSimpleRule_RHS">
+        <nodes xmi:id="_Ly2_sZPVEeGo6JryyuuVRA" name="resource" incoming="_mrE_UJPVEeGo6JryyuuVRA" outgoing="_ikyfYJPVEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_OgdOYJPVEeGo6JryyuuVRA" name="process" incoming="_ikyfYJPVEeGo6JryyuuVRA" outgoing="_mrE_UJPVEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <edges xmi:id="_ikyfYJPVEeGo6JryyuuVRA" source="_Ly2_sZPVEeGo6JryyuuVRA" target="_OgdOYJPVEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/token"/>
+        </edges>
+        <edges xmi:id="_mrE_UJPVEeGo6JryyuuVRA" source="_OgdOYJPVEeGo6JryyuuVRA" target="_Ly2_sZPVEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process/request"/>
+        </edges>
+      </rhs>
+      <mappings xmi:id="_Ly3mwJPVEeGo6JryyuuVRA" origin="_Ly2_sJPVEeGo6JryyuuVRA" image="_Ly2_sZPVEeGo6JryyuuVRA"/>
+      <mappings xmi:id="_Ogd1cJPVEeGo6JryyuuVRA" origin="_OgcnUJPVEeGo6JryyuuVRA" image="_OgdOYJPVEeGo6JryyuuVRA"/>
+    </multiRules>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_Pu-T4JRtEeGo6JryyuuVRA" name="mountAllRule">
+    <lhs xmi:id="_Pu-T4ZRtEeGo6JryyuuVRA" name="mountAllRule_LHS">
+      <nodes xmi:id="_HFBFMZkzEeGdafX8-ffNcw" name="root">
+        <type href="mutualexclusion.ecore#//Net"/>
+      </nodes>
+    </lhs>
+    <rhs xmi:id="_Pu-T45RtEeGo6JryyuuVRA" name="mountAllRule_RHS">
+      <nodes xmi:id="_HFHy4JkzEeGdafX8-ffNcw" name="root">
+        <type href="mutualexclusion.ecore#//Net"/>
+      </nodes>
+    </rhs>
+    <mappings xmi:id="_HFUAIJkzEeGdafX8-ffNcw" origin="_HFBFMZkzEeGdafX8-ffNcw" image="_HFHy4JkzEeGdafX8-ffNcw"/>
+    <multiRules xmi:id="_PZZWMJkzEeGdafX8-ffNcw" name="mulitMountAllRule">
+      <lhs xmi:id="_PZZWMZkzEeGdafX8-ffNcw" name="mulitMountAllRule_LHS">
+        <nodes xmi:id="_k_Rf8JT1EeGOraTCkW0kpg" name="process" incoming="_HFwsEJkzEeGdafX8-ffNcw">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <nodes xmi:id="_PZxJoJkzEeGdafX8-ffNcw" name="root" outgoing="_HFwsEJkzEeGdafX8-ffNcw">
+          <type href="mutualexclusion.ecore#//Net"/>
+        </nodes>
+        <edges xmi:id="_HFwsEJkzEeGdafX8-ffNcw" source="_PZxJoJkzEeGdafX8-ffNcw" target="_k_Rf8JT1EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Net/processes"/>
+        </edges>
+      </lhs>
+      <rhs xmi:id="_PZZWMpkzEeGdafX8-ffNcw" name="mulitMountAllRule_RHS">
+        <nodes xmi:id="_k_TVIJT1EeGOraTCkW0kpg" name="process" incoming="_oPR4IJT1EeGOraTCkW0kpg _HGWh8JkzEeGdafX8-ffNcw">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <nodes xmi:id="_rfD10JkyEeGGkqY5ejM2WA" name="resource" incoming="_HG5UgJkzEeGdafX8-ffNcw" outgoing="_oPR4IJT1EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_PZgq8JkzEeGdafX8-ffNcw" name="root" outgoing="_HGWh8JkzEeGdafX8-ffNcw _HG5UgJkzEeGdafX8-ffNcw">
+          <type href="mutualexclusion.ecore#//Net"/>
+        </nodes>
+        <edges xmi:id="_HGWh8JkzEeGdafX8-ffNcw" source="_PZgq8JkzEeGdafX8-ffNcw" target="_k_TVIJT1EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Net/processes"/>
+        </edges>
+        <edges xmi:id="_oPR4IJT1EeGOraTCkW0kpg" source="_rfD10JkyEeGGkqY5ejM2WA" target="_k_TVIJT1EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Resource/held_by"/>
+        </edges>
+        <edges xmi:id="_HG5UgJkzEeGdafX8-ffNcw" source="_PZgq8JkzEeGdafX8-ffNcw" target="_rfD10JkyEeGGkqY5ejM2WA">
+          <type href="mutualexclusion.ecore#//Net/resources"/>
+        </edges>
+      </rhs>
+      <mappings xmi:id="_k_UjQJT1EeGOraTCkW0kpg" origin="_k_Rf8JT1EeGOraTCkW0kpg" image="_k_TVIJT1EeGOraTCkW0kpg"/>
+      <mappings xmi:id="_PZ7hsZkzEeGdafX8-ffNcw" origin="_PZxJoJkzEeGdafX8-ffNcw" image="_PZgq8JkzEeGdafX8-ffNcw"/>
+      <multiMappings xmi:id="_PZxJoZkzEeGdafX8-ffNcw" origin="_HFBFMZkzEeGdafX8-ffNcw" image="_PZxJoJkzEeGdafX8-ffNcw"/>
+      <multiMappings xmi:id="_PZgq8ZkzEeGdafX8-ffNcw" origin="_HFHy4JkzEeGdafX8-ffNcw" image="_PZgq8JkzEeGdafX8-ffNcw"/>
+    </multiRules>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_m1Q8MJR8EeGo6JryyuuVRA" name="releaseAllRule">
+    <lhs xmi:id="_m1Q8MZR8EeGo6JryyuuVRA" name="releaseAllRule_LHS"/>
+    <rhs xmi:id="_m1Q8MpR8EeGo6JryyuuVRA" name="releaseAllRule_RHS"/>
+    <multiRules xmi:id="_Vudy4JT2EeGOraTCkW0kpg" name="multiReleaseAllRule">
+      <lhs xmi:id="_Vudy4ZT2EeGOraTCkW0kpg" name="multiReleaseAllRule_LHS" description="">
+        <nodes xmi:id="_tlAxsJR8EeGo6JryyuuVRA" name="r" outgoing="_0W0cQJT2EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_uxcvoJR8EeGo6JryyuuVRA" name="p" incoming="_0W0cQJT2EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <edges xmi:id="_0W0cQJT2EeGOraTCkW0kpg" source="_tlAxsJR8EeGo6JryyuuVRA" target="_uxcvoJR8EeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/held_by"/>
+        </edges>
+        <formula xsi:type="henshin:Not" xmi:id="_Ual6wJT3EeGOraTCkW0kpg">
+          <child xsi:type="henshin:NestedCondition" xmi:id="_VR0dsJT3EeGOraTCkW0kpg">
+            <conclusion xmi:id="_V7eesJT3EeGOraTCkW0kpg" name="forbid" description="">
+              <nodes xmi:id="_W0_goJT3EeGOraTCkW0kpg" name="m" incoming="_JkooYJT4EeGOraTCkW0kpg">
+                <type href="mutualexclusion.ecore#//Resource"/>
+              </nodes>
+              <nodes xmi:id="_dlRhoJT3EeGOraTCkW0kpg" name="p" outgoing="_JkooYJT4EeGOraTCkW0kpg">
+                <type href="mutualexclusion.ecore#//Process"/>
+              </nodes>
+              <edges xmi:id="_JkooYJT4EeGOraTCkW0kpg" source="_dlRhoJT3EeGOraTCkW0kpg" target="_W0_goJT3EeGOraTCkW0kpg">
+                <type href="mutualexclusion.ecore#//Process/request"/>
+              </edges>
+            </conclusion>
+            <mappings xmi:id="_htVjMJT3EeGOraTCkW0kpg" origin="_uxcvoJR8EeGo6JryyuuVRA" image="_dlRhoJT3EeGOraTCkW0kpg"/>
+          </child>
+        </formula>
+      </lhs>
+      <rhs xmi:id="_Vudy4pT2EeGOraTCkW0kpg" name="multiReleaseAllRule_RHS">
+        <nodes xmi:id="_tlAxsZR8EeGo6JryyuuVRA" name="r" outgoing="_1-p8wJT2EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_uxcvoZR8EeGo6JryyuuVRA" name="p" incoming="_1-p8wJT2EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <edges xmi:id="_1-p8wJT2EeGOraTCkW0kpg" source="_tlAxsZR8EeGo6JryyuuVRA" target="_uxcvoZR8EeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/release"/>
+        </edges>
+      </rhs>
+      <mappings xmi:id="_tlAxspR8EeGo6JryyuuVRA" origin="_tlAxsJR8EeGo6JryyuuVRA" image="_tlAxsZR8EeGo6JryyuuVRA"/>
+      <mappings xmi:id="_uxcvopR8EeGo6JryyuuVRA" origin="_uxcvoJR8EeGo6JryyuuVRA" image="_uxcvoZR8EeGo6JryyuuVRA"/>
+    </multiRules>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_txBX8JR9EeGo6JryyuuVRA" name="giveAllRule">
+    <lhs xmi:id="_txBX8ZR9EeGo6JryyuuVRA" name="giveAllRule_LHS"/>
+    <rhs xmi:id="_txBX8pR9EeGo6JryyuuVRA" name="giveAllRule_RHS"/>
+    <multiRules xmi:id="_jbbx0JT5EeGOraTCkW0kpg" name="multiGiveAllRule">
+      <lhs xmi:id="_jbbx0ZT5EeGOraTCkW0kpg" name="multiGiveAllRule_LHS">
+        <nodes xmi:id="_jbuswZT5EeGOraTCkW0kpg" name="root" outgoing="_11BqoJR9EeGo6JryyuuVRA _y87cIJR9EeGo6JryyuuVRA _xSu40JT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Net"/>
+        </nodes>
+        <nodes xmi:id="_10_1cJR9EeGo6JryyuuVRA" name="resource" incoming="_11BqoJR9EeGo6JryyuuVRA" outgoing="_2KhHIJT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_y85m8JR9EeGo6JryyuuVRA" name="process1" incoming="_y87cIJR9EeGo6JryyuuVRA _2KhHIJT5EeGOraTCkW0kpg" outgoing="_ytRkMJT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <nodes xmi:id="_xSjSoJT5EeGOraTCkW0kpg" name="process2" incoming="_xSu40JT5EeGOraTCkW0kpg _ytRkMJT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <edges xmi:id="_11BqoJR9EeGo6JryyuuVRA" source="_jbuswZT5EeGOraTCkW0kpg" target="_10_1cJR9EeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Net/resources"/>
+        </edges>
+        <edges xmi:id="_y87cIJR9EeGo6JryyuuVRA" source="_jbuswZT5EeGOraTCkW0kpg" target="_y85m8JR9EeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Net/processes"/>
+        </edges>
+        <edges xmi:id="_xSu40JT5EeGOraTCkW0kpg" source="_jbuswZT5EeGOraTCkW0kpg" target="_xSjSoJT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Net/processes"/>
+        </edges>
+        <edges xmi:id="_ytRkMJT5EeGOraTCkW0kpg" source="_y85m8JR9EeGo6JryyuuVRA" target="_xSjSoJT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Process/next"/>
+        </edges>
+        <edges xmi:id="_2KhHIJT5EeGOraTCkW0kpg" source="_10_1cJR9EeGo6JryyuuVRA" target="_y85m8JR9EeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/release"/>
+        </edges>
+      </lhs>
+      <rhs xmi:id="_jbbx0pT5EeGOraTCkW0kpg" name="multiGiveAllRule_RHS">
+        <nodes xmi:id="_jbk7wJT5EeGOraTCkW0kpg" name="root" outgoing="_11BqoZR9EeGo6JryyuuVRA _y88DMJR9EeGo6JryyuuVRA _xSzKQJT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Net"/>
+        </nodes>
+        <nodes xmi:id="_10_1cZR9EeGo6JryyuuVRA" name="resource" incoming="_11BqoZR9EeGo6JryyuuVRA" outgoing="_3-dJ8JT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <nodes xmi:id="_y86OAJR9EeGo6JryyuuVRA" name="process1" incoming="_y88DMJR9EeGo6JryyuuVRA" outgoing="_ytZgAJT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <nodes xmi:id="_xSm9AJT5EeGOraTCkW0kpg" name="process2" incoming="_xSzKQJT5EeGOraTCkW0kpg _ytZgAJT5EeGOraTCkW0kpg _3-dJ8JT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <edges xmi:id="_11BqoZR9EeGo6JryyuuVRA" source="_jbk7wJT5EeGOraTCkW0kpg" target="_10_1cZR9EeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Net/resources"/>
+        </edges>
+        <edges xmi:id="_y88DMJR9EeGo6JryyuuVRA" source="_jbk7wJT5EeGOraTCkW0kpg" target="_y86OAJR9EeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Net/processes"/>
+        </edges>
+        <edges xmi:id="_xSzKQJT5EeGOraTCkW0kpg" source="_jbk7wJT5EeGOraTCkW0kpg" target="_xSm9AJT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Net/processes"/>
+        </edges>
+        <edges xmi:id="_ytZgAJT5EeGOraTCkW0kpg" source="_y86OAJR9EeGo6JryyuuVRA" target="_xSm9AJT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Process/next"/>
+        </edges>
+        <edges xmi:id="_3-dJ8JT5EeGOraTCkW0kpg" source="_10_1cZR9EeGo6JryyuuVRA" target="_xSm9AJT5EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Resource/token"/>
+        </edges>
+      </rhs>
+      <mappings xmi:id="_jbzlQZT5EeGOraTCkW0kpg" origin="_jbuswZT5EeGOraTCkW0kpg" image="_jbk7wJT5EeGOraTCkW0kpg"/>
+      <mappings xmi:id="_10_1cpR9EeGo6JryyuuVRA" origin="_10_1cJR9EeGo6JryyuuVRA" image="_10_1cZR9EeGo6JryyuuVRA"/>
+      <mappings xmi:id="_y86OAZR9EeGo6JryyuuVRA" origin="_y85m8JR9EeGo6JryyuuVRA" image="_y86OAJR9EeGo6JryyuuVRA"/>
+      <mappings xmi:id="_xSoLIJT5EeGOraTCkW0kpg" origin="_xSjSoJT5EeGOraTCkW0kpg" image="_xSm9AJT5EeGOraTCkW0kpg"/>
+    </multiRules>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_EM3oAJSAEeGo6JryyuuVRA" name="takeAllRule">
+    <lhs xmi:id="_EM3oAZSAEeGo6JryyuuVRA" name="takeAllRule_LHS"/>
+    <rhs xmi:id="_EM3oApSAEeGo6JryyuuVRA" name="takeAllRule_RHS"/>
+    <multiRules xmi:id="_WG9PAJSAEeGo6JryyuuVRA" name="multiTakeAllRule">
+      <lhs xmi:id="_WG9PAZSAEeGo6JryyuuVRA" name="multiTakeAllRule_LHS">
+        <nodes xmi:id="_JJ3tgJSAEeGo6JryyuuVRA" name="process" incoming="_nUDh0JT8EeGOraTCkW0kpg" outgoing="_o83SsJT8EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <nodes xmi:id="_Jn_z8JSAEeGo6JryyuuVRA" name="resource" incoming="_o83SsJT8EeGOraTCkW0kpg" outgoing="_nUDh0JT8EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <edges xmi:id="_nUDh0JT8EeGOraTCkW0kpg" source="_Jn_z8JSAEeGo6JryyuuVRA" target="_JJ3tgJSAEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/token"/>
+        </edges>
+        <edges xmi:id="_o83SsJT8EeGOraTCkW0kpg" source="_JJ3tgJSAEeGo6JryyuuVRA" target="_Jn_z8JSAEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Process/request"/>
+        </edges>
+      </lhs>
+      <rhs xmi:id="_WG9PApSAEeGo6JryyuuVRA" name="multiTakeAllRule_RHS">
+        <nodes xmi:id="_JJ3tgZSAEeGo6JryyuuVRA" name="process" incoming="_rPZ9EJT8EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Process"/>
+        </nodes>
+        <nodes xmi:id="_XJVSAJSAEeGo6JryyuuVRA" name="resource" outgoing="_rPZ9EJT8EeGOraTCkW0kpg">
+          <type href="mutualexclusion.ecore#//Resource"/>
+        </nodes>
+        <edges xmi:id="_rPZ9EJT8EeGOraTCkW0kpg" source="_XJVSAJSAEeGo6JryyuuVRA" target="_JJ3tgZSAEeGo6JryyuuVRA">
+          <type href="mutualexclusion.ecore#//Resource/held_by"/>
+        </edges>
+      </rhs>
+      <mappings xmi:id="_JJ3tgpSAEeGo6JryyuuVRA" origin="_JJ3tgJSAEeGo6JryyuuVRA" image="_JJ3tgZSAEeGo6JryyuuVRA"/>
+      <mappings xmi:id="_XJVSAZSAEeGo6JryyuuVRA" origin="_Jn_z8JSAEeGo6JryyuuVRA" image="_XJVSAJSAEeGo6JryyuuVRA"/>
+    </multiRules>
+  </units>
+  <units xsi:type="henshin:Rule" xmi:id="_jKgV8JlDEeGdafX8-ffNcw" name="requestSimple2Rule">
+    <lhs xmi:id="_jKgV8ZlDEeGdafX8-ffNcw" name="requestSimple2Rule_LHS">
+      <nodes xmi:id="_mG8R4JlDEeGdafX8-ffNcw" name="resource" outgoing="_rFt5AJlDEeGdafX8-ffNcw">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_m9L9YJlDEeGdafX8-ffNcw" name="process" incoming="_rFt5AJlDEeGdafX8-ffNcw">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_rFt5AJlDEeGdafX8-ffNcw" source="_mG8R4JlDEeGdafX8-ffNcw" target="_m9L9YJlDEeGdafX8-ffNcw">
+        <type href="mutualexclusion.ecore#//Resource/token"/>
+      </edges>
+      <formula xsi:type="henshin:Not" xmi:id="_pwbhEJlDEeGdafX8-ffNcw">
+        <child xsi:type="henshin:NestedCondition" xmi:id="_pwbhEZlDEeGdafX8-ffNcw">
+          <conclusion xmi:id="_pwbhEplDEeGdafX8-ffNcw" name="forbid">
+            <nodes xmi:id="_pwbhE5lDEeGdafX8-ffNcw" name="process" outgoing="_nqgWYJlDEeGdafX8-ffNcw">
+              <type href="mutualexclusion.ecore#//Process"/>
+            </nodes>
+            <nodes xmi:id="_pwcIIJlDEeGdafX8-ffNcw" name="resource" incoming="_nqgWYJlDEeGdafX8-ffNcw">
+              <type href="mutualexclusion.ecore#//Resource"/>
+            </nodes>
+            <edges xmi:id="_nqgWYJlDEeGdafX8-ffNcw" source="_pwbhE5lDEeGdafX8-ffNcw" target="_pwcIIJlDEeGdafX8-ffNcw">
+              <type href="mutualexclusion.ecore#//Process/request"/>
+            </edges>
+          </conclusion>
+          <mappings xmi:id="_pwbhFJlDEeGdafX8-ffNcw" origin="_m9L9YJlDEeGdafX8-ffNcw" image="_pwbhE5lDEeGdafX8-ffNcw"/>
+          <mappings xmi:id="_pwcIIZlDEeGdafX8-ffNcw" origin="_mG8R4JlDEeGdafX8-ffNcw" image="_pwcIIJlDEeGdafX8-ffNcw"/>
+        </child>
+      </formula>
+    </lhs>
+    <rhs xmi:id="_jKgV8plDEeGdafX8-ffNcw" name="requestSimple2Rule_RHS">
+      <nodes xmi:id="_mG8R4ZlDEeGdafX8-ffNcw" name="resource" incoming="_x9oMAJlDEeGdafX8-ffNcw" outgoing="_rFugEJlDEeGdafX8-ffNcw">
+        <type href="mutualexclusion.ecore#//Resource"/>
+      </nodes>
+      <nodes xmi:id="_m9L9YZlDEeGdafX8-ffNcw" name="process" incoming="_rFugEJlDEeGdafX8-ffNcw" outgoing="_x9oMAJlDEeGdafX8-ffNcw">
+        <type href="mutualexclusion.ecore#//Process"/>
+      </nodes>
+      <edges xmi:id="_rFugEJlDEeGdafX8-ffNcw" source="_mG8R4ZlDEeGdafX8-ffNcw" target="_m9L9YZlDEeGdafX8-ffNcw">
+        <type href="mutualexclusion.ecore#//Resource/token"/>
+      </edges>
+      <edges xmi:id="_x9oMAJlDEeGdafX8-ffNcw" source="_m9L9YZlDEeGdafX8-ffNcw" target="_mG8R4ZlDEeGdafX8-ffNcw">
+        <type href="mutualexclusion.ecore#//Process/request"/>
+      </edges>
+    </rhs>
+    <mappings xmi:id="_mG848JlDEeGdafX8-ffNcw" origin="_mG8R4JlDEeGdafX8-ffNcw" image="_mG8R4ZlDEeGdafX8-ffNcw"/>
+    <mappings xmi:id="_m9L9YplDEeGdafX8-ffNcw" origin="_m9L9YJlDEeGdafX8-ffNcw" image="_m9L9YZlDEeGdafX8-ffNcw"/>
+  </units>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_Kxl54JQrEeGo6JryyuuVRA" name="sts" subUnits="_UZccoJN1EeGo6JryyuuVRA _gOn9cJPOEeGo6JryyuuVRA"/>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_jxACIJRJEeGo6JryyuuVRA" name="loopSts" subUnits="_ARAU0JPPEeGo6JryyuuVRA _e6MEoJPPEeGo6JryyuuVRA _yUzDMJPPEeGo6JryyuuVRA"/>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_cufo4JRuEeGo6JryyuuVRA" name="loopLts" subUnits="_yUzDMJPPEeGo6JryyuuVRA _ARAU0JPPEeGo6JryyuuVRA _vcFz4JPTEeGo6JryyuuVRA"/>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_wncJQJRuEeGo6JryyuuVRA" name="finalLts" subUnits="_yUzDMJPPEeGo6JryyuuVRA _ARAU0JPPEeGo6JryyuuVRA"/>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_WmwGMJR8EeGo6JryyuuVRA" name="alap" subUnits="_Pu-T4JRtEeGo6JryyuuVRA _m1Q8MJR8EeGo6JryyuuVRA _txBX8JR9EeGo6JryyuuVRA _HS6poJPVEeGo6JryyuuVRA _EM3oAJSAEeGo6JryyuuVRA"/>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_XoFHgJk2EeGdafX8-ffNcw" name="lts2" subUnits="_kgnFIJPQEeGo6JryyuuVRA _PgCY4JPREeGo6JryyuuVRA _zU8d0JUdEeGOraTCkW0kpg _H_HIoJPSEeGo6JryyuuVRA _PgCY4JPREeGo6JryyuuVRA _zU8d0JUdEeGOraTCkW0kpg _L7tEkJPTEeGo6JryyuuVRA"/>
+  <units xsi:type="henshin:SequentialUnit" xmi:id="_eCNjQJk_EeGdafX8-ffNcw" name="alap2" subUnits="_Pu-T4JRtEeGo6JryyuuVRA _mOA_sJlCEeGdafX8-ffNcw _txBX8JR9EeGo6JryyuuVRA _HS6poJPVEeGo6JryyuuVRA _EM3oAJSAEeGo6JryyuuVRA"/>
+  <units xsi:type="henshin:LoopUnit" xmi:id="_zU8d0JUdEeGOraTCkW0kpg" name="waitingAllRule" subUnit="_lNuNUJPREeGo6JryyuuVRA"/>
+  <units xsi:type="henshin:LoopUnit" xmi:id="_mOA_sJlCEeGdafX8-ffNcw" name="release2AllRule" subUnit="_e6MEoJPPEeGo6JryyuuVRA"/>
+  <units xsi:type="henshin:LoopUnit" xmi:id="_TFBgIJlDEeGdafX8-ffNcw" name="give2AllRule" subUnit="_yUzDMJPPEeGo6JryyuuVRA"/>
+  <units xsi:type="henshin:LoopUnit" xmi:id="_12abcJlDEeGdafX8-ffNcw" name="requestSimpleAllRule" subUnit="_jKgV8JlDEeGdafX8-ffNcw"/>
+  <units xsi:type="henshin:LoopUnit" xmi:id="_CM2XMJlFEeGdafX8-ffNcw" name="take2AllRule" subUnit="_ARAU0JPPEeGo6JryyuuVRA"/>
+</henshin:Module>
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/mutualexclusion/mutualexclusion.henshin_text b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/mutualexclusion/mutualexclusion.henshin_text
new file mode 100644
index 0000000..379bd6d
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/testCases/mutualexclusion/mutualexclusion.henshin_text
@@ -0,0 +1,354 @@
+ePackageImport mutualexclusion
+
+rule newRule(){
+	graph{
+		node root:Net
+		node process1:Process
+		node process2:Process
+		create node newProcess:Process
+		edges[(delete process1->process2:next),
+			(root->process1:processes),
+			(root->process2:processes),
+			(create newProcess->process2:next),
+			(create process1->newProcess:next),
+			(create root->newProcess:processes)
+		]
+	}
+}
+
+rule mountRule(){
+	graph{
+		node root:Net
+		node process:Process
+		create node newResource:Resource
+		edges[(root->process:processes),
+			(create newResource->process:token),
+			(create root->newResource:resources)
+		]
+	}
+}
+
+rule requestRule(){
+	graph{
+		node resource:Resource
+		multiRule multiRequestRule{
+			graph{
+				node process:Process
+				forbid node m:Resource
+				edges[(create process->resource:request),
+					(forbid resource->process:held_by),
+					(forbid process->m:request)
+				]				
+			}
+		}
+	}
+}
+
+
+rule takeRule(){
+	graph{
+		node process:Process
+		node resource:Resource
+		edges[(delete process->resource:request),
+			(delete resource->process:token),
+			(create resource->process:held_by)
+		]
+	}
+}
+
+rule releaseRule(){
+	graph{
+		node process:Process
+		node resource:Resource
+		edges[(delete resource->process:held_by),
+			(create resource->process:release)
+		]
+		matchingFormula{
+			formula !default
+			conditionGraph default{
+				reuse resource
+				node forbidResource:Resource
+				edges[(process->forbidResource:request)]
+			}
+		}
+	}
+}
+
+
+rule giveRule(){
+	graph{
+		node resource:Resource
+		node process1:Process
+		node process2:Process
+		edges[(process1->process2:next),
+			(create resource->process2:token),
+			(delete resource->process1:release)
+		]
+	}
+}
+
+
+rule requestStarRule(){
+	graph{
+		multiRule multiRequestStarRule{
+			graph{
+				node resource1:Resource
+				node process1:Process
+				node resource2:Resource
+				node process2:Process
+				edges[(process2->process1:next),
+					(resource1->process1:held_by),
+					(resource2->process2:held_by),
+					(create process1->resource2:request),
+					(forbid process1->resource2:request)
+				]
+			}
+		}
+	}
+}
+
+
+rule blockedRule(){
+	graph{
+		node process1:Process
+		node resource:Resource
+		node process2:Process
+		edges[(process1->resource:request),
+			(resource->process2:held_by),
+			(create resource->process1:blocked)
+		]
+	}
+}
+
+rule waitingRule(){
+	graph{
+		node process1:Process
+		node resource1:Resource
+		node process2:Process
+		node resource2:Resource
+		edges[(resource1->process2:held_by),
+			(process1->resource1:request),
+			(delete resource2->process2:blocked),
+			(create resource2->process1:blocked)
+		]
+	}
+}
+
+rule unlockRule(){
+	graph{
+		node resource:Resource
+		node process:Process
+		edges[(delete resource->process:blocked),
+			(delete resource->process:held_by),
+			(create resource->process:release)
+		]
+	}
+}
+
+rule ignoreRule(){
+	graph{
+		node resource:Resource
+		node process:Process
+		edges[(delete resource->process:blocked)
+		]
+		matchingFormula{
+			formula !default
+			conditionGraph default{
+				reuse resource
+				node forbidResource:Resource
+				edges[(forbidResource->process:held_by)]
+			}
+		}
+	}
+}
+
+rule releaseStarRule(){
+	graph{
+		node process1:Process
+		node resource1:Resource
+		node resource2:Resource
+		node process2:Process
+		edges[(process1->process2:next),
+			(process2->resource2:request),
+			(resource1->process1:held_by),
+			(delete resource2->process1:held_by),
+			(create resource2->process1:release)
+		]
+	}
+}
+
+
+rule requestSimpleRule(){
+	graph{
+		multiRule multiRequestSimpleRule{
+			graph{
+				node resource:Resource
+				node process:Process
+				edges[(resource->process:token),
+					(create process->resource:request),
+					(forbid process->resource:request)
+				]
+			}
+		}
+	}
+}
+
+rule mountAllRule(){
+	graph{
+		node root:Net
+		multiRule mulitMountAllRule{
+			graph{
+				node process:Process
+				create node resource:Resource
+				edges[(root->process:processes),
+					(create resource->process:held_by),
+					(create root->resource:resources)
+				]
+			}
+		}
+	}
+}
+
+rule releaseAllRule(){
+	graph{
+		multiRule multiReleaseAllRule{
+			graph{
+				node r:Resource
+				node p:Process
+				forbid node m:Resource
+				edges[(delete r->p:held_by),
+					(create r->p:release),
+					(forbid p->m:request)
+				]
+			}
+		}
+	}
+}
+
+
+rule giveAllRule(){
+	graph{
+		multiRule multiGiveAllRule{
+			graph{
+				node root:Net
+				node resource:Resource
+				node process1:Process
+				node process2:Process
+				edges[(root->resource:resources),
+					(root->process1:processes),
+					(root->process2:processes),
+					(process1->process2:next),
+					(delete resource->process1:release),
+					(create resource->process2:token)
+				]
+			}
+		}
+	}
+}
+
+
+rule takeAllRule(){
+	graph{
+		multiRule multiTakeAllRule{
+			graph{
+				node process:Process
+				node resource:Resource
+				edges[(delete resource->process:token),
+					(delete process->resource:request),
+					(create resource->process:held_by)
+				]
+			}
+		}
+	}
+}
+
+
+rule requestSimple2Rule(){
+	graph{
+		node resource:Resource
+		node process:Process
+		edges[(resource->process:token),
+			(create process->resource:request),
+			(forbid process->resource:request)
+		]	
+	}
+}
+
+unit sts(){
+	mountRule()
+	requestRule()
+}
+
+unit loopSts(){
+	takeRule()
+	releaseRule()
+	giveRule()
+}
+
+unit loopLts(){
+	giveRule()
+	takeRule()
+	releaseStarRule()
+}
+
+unit finalLts(){
+	giveRule()
+	takeRule()
+}
+
+unit alap(){
+	mountAllRule()
+	releaseAllRule()
+	giveAllRule()
+	requestSimpleRule()
+	takeAllRule()
+}
+
+unit waitingAllRule(){
+	while{
+		waitingRule()
+	}
+}
+
+unit lts2(){
+	requestStarRule()
+	blockedRule()
+	waitingAllRule()
+	unlockRule()
+	blockedRule()
+	waitingAllRule()
+	ignoreRule()
+}
+
+unit alap2(){
+	mountAllRule()
+	release2AllRule()
+	giveAllRule()
+	requestSimpleRule()
+	takeAllRule()
+}
+
+unit release2AllRule(){
+	while{
+		releaseRule()
+	}
+}
+
+
+unit give2AllRule(){
+	while{
+		giveRule()
+	}
+}
+
+unit requestSimpleAllRule(){
+	while{
+		requestSimple2Rule()
+	}
+}
+
+unit take2AllRule(){
+	while{
+		takeRule()
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation.tests/xtend-gen/org/eclipse/emf/henshin/text/transformation/tests/.gitignore b/plugins/org.eclipse.emf.henshin.text.transformation.tests/xtend-gen/org/eclipse/emf/henshin/text/transformation/tests/.gitignore
new file mode 100644
index 0000000..b71c00d
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.transformation.tests/xtend-gen/org/eclipse/emf/henshin/text/transformation/tests/.gitignore
@@ -0,0 +1,3 @@
+/.TestTransformation.java._trace
+/.TestTransformation.xtendbin
+/TestTransformation.java
diff --git a/plugins/org.eclipse.emf.henshin.text.transformation/transforms/Henshin_text2HenshinTransformation/Henshin_text2HenshinTransformation.qvto b/plugins/org.eclipse.emf.henshin.text.transformation/transforms/Henshin_text2HenshinTransformation/Henshin_text2HenshinTransformation.qvto
index 218b85b..80c2b10 100644
--- a/plugins/org.eclipse.emf.henshin.text.transformation/transforms/Henshin_text2HenshinTransformation/Henshin_text2HenshinTransformation.qvto
+++ b/plugins/org.eclipse.emf.henshin.text.transformation/transforms/Henshin_text2HenshinTransformation/Henshin_text2HenshinTransformation.qvto
@@ -20,7 +20,7 @@
 	result.units+=self.transformationsystem->selectByType(Unit) ->map ModelElementUnit2IteratedUnit();
 	result.units+=self.transformationsystem->selectByType(Unit) ->map ModelElementUnit2LoopUnit();
 	result.units+=self.transformationsystem->selectByType(Unit) ->map ModelElementUnit2IndependentUnit();
-	result.units+=self.transformationsystem->selectByType(Unit) ->map ModelElementRule2PriorityUnit();	
+	result.units+=self.transformationsystem->selectByType(Unit) ->map ModelElementUnit2PriorityUnit();	
 } 
 
 //--------------------------------------------------------------------------------------------------------------
@@ -29,6 +29,7 @@
 mapping henshin_text::Parameter::Parameter2Parameter():henshin::Parameter{
 	result.name:=self.name;
 	result.type:=getType(self.type);
+	result.kind:=getKind(self.kind);
 }
 
 
@@ -124,7 +125,7 @@
 		var helpEdge:=new henshin::Edge();
 		helpEdge.type:=edge.type;
 		helpEdge.source:=result.rhs.nodes->any(name=edge.source.name);
-		helpEdge.target:=result.rhs.nodes->any(name=edge.target.name);
+		helpEdge.target:=result.rhs.nodes->any(name=edge.target.name);		
 		result.rhs.edges+=helpEdge;
 	};
 	self.multiruleElements->selectByType(Graph)->first().graphElements->selectByType(Edges).edges->forEach(edge){
@@ -144,21 +145,27 @@
 	 		if((helpSource.actiontype<>"forbid")and(helpSource.actiontype<>"require")and(helpTarget.actiontype<>"forbid")and(helpTarget.actiontype<>"require")){
 				var helpEdge:=new henshin::Edge();
 				helpEdge.type:=edge.type;
-				if(helpSource.actiontype="create"){
-					helpEdge.source:=result.rhs.nodes->any(name=helpSource.name);
-				}else if((helpSource.actiontype="delete")or(helpSource.actiontype="preserve")or(helpSource.actiontype=null)){
-					helpEdge.source:=result.lhs.nodes->any(name=helpSource.name);
-				};
-				if(helpTarget.actiontype="create"){
-					helpEdge.target:=result.rhs.nodes->any(name=helpTarget.name);
-				}else if((helpTarget.actiontype="delete")or(helpTarget.actiontype="preserve")or(helpTarget.actiontype=null)){
-					helpEdge.target:=result.lhs.nodes->any(name=helpTarget.name);
-				};
+//				if(helpSource.actiontype="create"){
+//					helpEdge.source:=result.rhs.nodes->any(name=helpSource.name);
+//				}else if((helpSource.actiontype="delete")or(helpSource.actiontype="preserve")or(helpSource.actiontype=null)){
+//					helpEdge.source:=result.lhs.nodes->any(name=helpSource.name);
+//				};
+//				if(helpTarget.actiontype="create"){
+//					helpEdge.target:=result.rhs.nodes->any(name=helpTarget.name);
+//				}else if((helpTarget.actiontype="delete")or(helpTarget.actiontype="preserve")or(helpTarget.actiontype=null)){
+//					helpEdge.target:=result.lhs.nodes->any(name=helpTarget.name);
+//				};
 				if(edge.actiontype="create"){
+					helpEdge.source:=result.rhs.nodes->any(name=helpSource.name);
+					helpEdge.target:=result.rhs.nodes->any(name=helpTarget.name);
 					result.rhs.edges+=helpEdge;
 				}else if(edge.actiontype="delete"){
+					helpEdge.source:=result.lhs.nodes->any(name=helpSource.name);
+					helpEdge.target:=result.lhs.nodes->any(name=helpTarget.name);
 					result.lhs.edges+=helpEdge;
 				}else if((edge.actiontype="preserve")or(edge.actiontype=null)){
+					helpEdge.source:=result.lhs.nodes->any(name=helpSource.name);
+					helpEdge.target:=result.lhs.nodes->any(name=helpTarget.name);
 					result.lhs.edges+=helpEdge;
 					var helpEdgeRHS:=new henshin::Edge();
 					helpEdgeRHS.type:=helpEdge.type;
@@ -218,7 +225,7 @@
 				if((helpSource.actiontype<>"forbid")and(helpSource.actiontype<>"require")and(helpTarget.actiontype<>"forbid")and(helpTarget.actiontype<>"require")){
 					var helpEdge:=new henshin::Edge();
 					helpEdge.type:=edge.type;
-					if((helpSource.actiontype="create")or(helpTarget.actiontype="create")){
+					if((helpSource.actiontype="create")or(helpTarget.actiontype="create")or(edge.actiontype="create")){
 						helpEdge.source:=rhs.nodes->any(name=helpSource.name);
 						helpEdge.target:=rhs.nodes->any(name=helpTarget.name);
 						if(edge.actiontype<>"create"){
@@ -277,7 +284,8 @@
 	nodes->forEach(node){
 		node.attribute->forEach(attribute){
 			if(attribute.update<>null){
-				self->any(name=node.name).attributes->any(type=attribute.name).value:=attribute.value.castExpressionValue();
+				self->any(name=node.name).attributes->select(type=attribute.name)->first().value:=attribute.value.castExpressionValue();
+				//self->any(name=node.name).attributes->any(type=attribute.name).value:=attribute.value.castExpressionValue();
 			};
 		};
 	};
@@ -658,7 +666,7 @@
 }
 
 
-mapping henshin_text::Unit::ModelElementRule2PriorityUnit():henshin::PriorityUnit 
+mapping henshin_text::Unit::ModelElementUnit2PriorityUnit():henshin::PriorityUnit 
 when{self.unitElements->selectByType(henshin_text::PriorityUnit)->size()<>0; }{
 	result.name:=self.name;
 	result.parameters+=self.parameters->map Parameter2Parameter();
@@ -670,28 +678,40 @@
 }
 
 query henshin_text::Call::Parameter2ParameterMapping(parameters:OrderedSet(henshin::Parameter),unitName:String):OrderedSet(henshin::ParameterMapping){
-	var index=1;
 	var parameterMappingSet:OrderedSet(henshin::ParameterMapping);
-	self.parameters->forEach(parameter){
+	
+	var i : EInt := 1;
+	self.parameters->forEach(parameter)
+	{
+		// skip VAR parameters as they are irrelevant
+		while (self.elementCall.parameters->at(i).kind = ParameterKind::VAR) { i:=i+1;};
+
 		var parameterMapping:henshin::ParameterMapping:=new henshin::ParameterMapping();
 		parameterMapping.source:=parameters->any(name=parameter.name+"_"+unitName or name=parameter.name);
-		parameterMapping.target:=self.elementCall.parameters->at(index).late resolveone(henshin::Parameter);
+		parameterMapping.target:=self.elementCall.parameters->at(i).late resolveone(henshin::Parameter);
 		parameterMappingSet+=parameterMapping;
-		index:=index+1;
-	};
+		i:=i+1;
+	};	
+
 	return parameterMappingSet;
 }
 
 query henshin_text::Call::Parameter2ParameterMappingReverse(parameters:OrderedSet(henshin::Parameter),unitName:String):OrderedSet(henshin::ParameterMapping){
-	var index=1;
 	var parameterMappingSet:OrderedSet(henshin::ParameterMapping);
-	self.parameters->forEach(parameter){
+	
+	var i : EInt = 1;
+	self.parameters->forEach(parameter)
+	{
+		// skip VAR parameters
+		while (self.elementCall.parameters->at(i).kind = ParameterKind::VAR) { i:=i+1;};
+
 		var parameterMapping:henshin::ParameterMapping:=new henshin::ParameterMapping();
-		parameterMapping.source:=self.elementCall.parameters->at(index).late resolveone(henshin::Parameter);
+		parameterMapping.source:=self.elementCall.parameters->at(i).late resolveone(henshin::Parameter);
 		parameterMapping.target:=parameters->any(name=parameter.name+"_"+unitName or name=parameter.name);
 		parameterMappingSet+=parameterMapping;
-		index:=index+1;
-	};
+		i:=i+1;
+	};	
+
 	return parameterMappingSet;
 }
 
@@ -703,6 +723,18 @@
 //--------------------------------------------------------------------------------------------------------------
 //Help
 //--------------------------------------------------------------------------------------------------------------
+query getKind(kind:henshin_text::ParameterKind):henshin::ParameterKind {
+	switch {
+		case (kind = ParameterKind::VAR) {return henshin::ParameterKind::VAR;}
+		case (kind = ParameterKind::UNKNOWN) {return henshin::ParameterKind::UNKNOWN;}
+		case (kind = ParameterKind::IN) {return henshin::ParameterKind::IN;}
+		case (kind = ParameterKind::OUT) {return henshin::ParameterKind::OUT;}
+		case (kind = ParameterKind::INOUT) {return henshin::ParameterKind::INOUT;}
+	};
+	// fall back, should be handlded in the switch since the switch statement is exhaustive
+	return henshin::ParameterKind::UNKNOWN;
+}
+
 query getType(type:henshin_text::ParameterType):ecore::EClassifier{
 	if(type.type=null){
 		switch{ 
diff --git a/plugins/org.eclipse.emf.henshin.text.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.henshin.text.ui/META-INF/MANIFEST.MF
index d96a583..0db752b 100644
--- a/plugins/org.eclipse.emf.henshin.text.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.henshin.text.ui/META-INF/MANIFEST.MF
@@ -23,8 +23,9 @@
  org.eclipse.emf.henshin.editor;bundle-version="1.3.0",

  org.eclipse.emf.henshin.interpreter.ui;bundle-version="1.3.0"

 Import-Package: org.apache.log4j

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

-Export-Package: org.eclipse.emf.henshin.text.ui.quickfix,

+Bundle-RequiredExecutionEnvironment: JavaSE-1.7

+Export-Package: org.eclipse.emf.henshin.text.ui.contentassist,

  org.eclipse.emf.henshin.text.ui.internal,

- org.eclipse.emf.henshin.text.ui.contentassist

+ org.eclipse.emf.henshin.text.ui.quickfix,

+ org.eclipse.emf.henshin.text.ui.util

 Bundle-Activator: org.eclipse.emf.henshin.text.ui.internal.TextActivator

diff --git a/plugins/org.eclipse.emf.henshin.text.ui/plugin.xml b/plugins/org.eclipse.emf.henshin.text.ui/plugin.xml
index d77d269..1c03fc3 100644
--- a/plugins/org.eclipse.emf.henshin.text.ui/plugin.xml
+++ b/plugins/org.eclipse.emf.henshin.text.ui/plugin.xml
@@ -413,15 +413,15 @@
 		<handler
 				class="org.eclipse.emf.henshin.text.ui.Henshin_textExecutableExtensionFactory:org.eclipse.emf.henshin.text.ui.handler.ApplyTransformationHandler"
 				commandId="org.eclipse.emf.henshin.text.ui.handler.ApplyTransformationCommand">
-    	</handler>
+    		</handler>
 	</extension>
    	
 	<extension point="org.eclipse.ui.commands">
 		<command name="Apply Transformation" id="org.eclipse.emf.henshin.text.ui.handler.ApplyTransformationCommand">
 		</command>
 	</extension>
-	
-	  <extension
+
+	<extension
          point="org.eclipse.ui.menus">
       <menuContribution
             locationURI="popup:org.eclipse.emf.henshin.menu">
diff --git a/plugins/org.eclipse.emf.henshin.text.ui/src-gen/org/eclipse/emf/henshin/text/ui/contentassist/AbstractHenshin_textProposalProvider.java b/plugins/org.eclipse.emf.henshin.text.ui/src-gen/org/eclipse/emf/henshin/text/ui/contentassist/AbstractHenshin_textProposalProvider.java
index ce31eeb..34fa478 100644
--- a/plugins/org.eclipse.emf.henshin.text.ui/src-gen/org/eclipse/emf/henshin/text/ui/contentassist/AbstractHenshin_textProposalProvider.java
+++ b/plugins/org.eclipse.emf.henshin.text.ui/src-gen/org/eclipse/emf/henshin/text/ui/contentassist/AbstractHenshin_textProposalProvider.java
@@ -208,6 +208,9 @@
 	public void completeLoopUnit_SubElement(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
+	public void completeParameter_Kind(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeParameter_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -399,6 +402,12 @@
 	public void complete_Parameter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_ParameterKind(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ParameterKindRule(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_ParameterType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
diff --git a/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/handler/ApplyTransformationHandler.java b/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/handler/ApplyTransformationHandler.java
index 981d56b..5ae8d9b 100644
--- a/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/handler/ApplyTransformationHandler.java
+++ b/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/handler/ApplyTransformationHandler.java
@@ -7,6 +7,7 @@
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.IHandler;
+
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
@@ -18,24 +19,16 @@
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.util.Diagnostician;
+
 import org.eclipse.emf.henshin.interpreter.ui.wizard.HenshinWizard;
 import org.eclipse.emf.henshin.interpreter.ui.wizard.HenshinWizardDialog;
 import org.eclipse.emf.henshin.model.Module;
 import org.eclipse.emf.henshin.text.henshin_text.Model;
 import org.eclipse.emf.henshin.text.henshin_text.ModelElement;
-import org.eclipse.emf.henshin.text.henshin_text.Rule;
-import org.eclipse.emf.henshin.text.henshin_text.Unit;
-import org.eclipse.emf.henshin.text.ui.util.ModifyModelUnits;
+import org.eclipse.emf.henshin.text.ui.util.Transformation;
 import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.text.ITextSelection;
 import org.eclipse.jface.text.TextSelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.m2m.qvt.oml.BasicModelExtent;
-import org.eclipse.m2m.qvt.oml.ExecutionContext;
-import org.eclipse.m2m.qvt.oml.ExecutionContextImpl;
-import org.eclipse.m2m.qvt.oml.ExecutionDiagnostic;
-import org.eclipse.m2m.qvt.oml.ModelExtent;
-import org.eclipse.m2m.qvt.oml.TransformationExecutor;
 import org.eclipse.ui.handlers.HandlerUtil;
 import org.eclipse.xtext.resource.EObjectAtOffsetHelper;
 import org.eclipse.xtext.resource.XtextResource;
@@ -46,6 +39,7 @@
 import com.google.inject.Inject;
 
 
+
 public class ApplyTransformationHandler extends AbstractHandler implements IHandler{
 
 	/**
@@ -100,46 +94,21 @@
 
 		if (henshin_textResource != null) {
 			Diagnostic diagnostic = Diagnostician.INSTANCE.validate(henshin_textResource.getContents().get(0));
-			boolean comment=true;       
+			//boolean comment=true;       
 			if(henshin_textResource.getErrors().isEmpty()&&((diagnostic.getSeverity()==Diagnostic.OK)||(diagnostic.getSeverity()==Diagnostic.WARNING))){
 				if(((Model) henshin_textResource.getContents().get(0)).getTransformationsystem().size()>0){
 
-					//Modify Units
-					List<Unit> unitList=new ArrayList<Unit>();
-					List<Unit> resultUnitList=new ArrayList<Unit>();
-					for (ModelElement modelElement : ((Model) henshin_textResource.getContents().get(0)).getTransformationsystem()) {
-						if(modelElement instanceof Unit){
-							unitList.add((Unit)modelElement);	
-						}
-						if(modelElement.getName() != null && modelElement.getName().equals(modelElementName)){ // why not check here for Rule?
-							comment=false;
-						}
-					}
-					ModifyModelUnits modifyUnit=new ModifyModelUnits();
-					for(Unit unit:unitList){
-						resultUnitList.addAll(modifyUnit.flat(unit,0,null));
-					}
-					((Model) henshin_textResource.getContents().get(0)).getTransformationsystem().removeAll(unitList);
-					((Model) henshin_textResource.getContents().get(0)).getTransformationsystem().addAll(resultUnitList);
-
-					//Transform henshin_text2henshin
-					URI transformationURI = URI.createURI("platform:/plugin/org.eclipse.emf.henshin.text.transformation/transforms/Henshin_text2HenshinTransformation/Henshin_text2HenshinTransformation.qvto");
-					TransformationExecutor executor = new TransformationExecutor(transformationURI);
-					ExecutionContext context = new ExecutionContextImpl();
-					ModelExtent source_HenshinText = new BasicModelExtent(henshin_textResource.getContents());		
-					ModelExtent target_Henshin = new BasicModelExtent();
-					ExecutionDiagnostic result = executor.execute(context, source_HenshinText, target_Henshin);
-
-					if(result.getSeverity() == Diagnostic.OK){
+					ResourceSet resourceSetTransform = new ResourceSetImpl();
+					String uriMy=henshin_textResource.getURI().toString().replace(".","_")+".henshin";
+					Resource resourceResult = resourceSetTransform.createResource(URI.createURI(uriMy));
+					Transformation transformation=new Transformation();
+					resourceResult=transformation.transformHenshin_textToHenshin(henshin_textResource,"platform:/plugin/org.eclipse.emf.henshin.text.transformation/transforms/Henshin_text2HenshinTransformation/Henshin_text2HenshinTransformation.qvto","");
+					if(resourceResult!=null){
 						//Prepare for Transformation-Dialog
-						ResourceSet resourceSetTransform = new ResourceSetImpl();
-						String uriMy=henshin_textResource.getURI().toString().replace(".","_")+".henshin";
-						Resource resourceResult = resourceSetTransform.createResource(URI.createURI(uriMy));
-						resourceResult.getContents().addAll(target_Henshin.getContents());
-						List <org.eclipse.emf.henshin.model.Unit> help=orderUnits(((Module) target_Henshin.getContents().get(0)).getUnits());
-						((Module) target_Henshin.getContents().get(0)).getUnits().clear();
-						((Module) target_Henshin.getContents().get(0)).getUnits().addAll(help);
-						org.eclipse.emf.henshin.model.Unit unit=getUnitByName(((Module) target_Henshin.getContents().get(0)).getUnits(),modelElementName);
+						List <org.eclipse.emf.henshin.model.Unit> help=orderUnits(((Module) resourceResult.getContents().get(0)).getUnits());
+						((Module) resourceResult.getContents().get(0)).getUnits().clear();
+						((Module) resourceResult.getContents().get(0)).getUnits().addAll(help);
+						org.eclipse.emf.henshin.model.Unit unit=getUnitByName(((Module) resourceResult.getContents().get(0)).getUnits(),modelElementName);
 
 						//Call Transformation-Dialog
 						HenshinWizard tWiz;
@@ -148,7 +117,7 @@
 							tWiz = new HenshinWizard(unit);
 						}
 						else {
-							tWiz = new HenshinWizard((Module) target_Henshin.getContents().get(0));
+							tWiz = new HenshinWizard((Module) resourceResult.getContents().get(0));
 						}
 						HenshinWizardDialog dialog = new HenshinWizardDialog(HandlerUtil.getActiveWorkbenchWindow(event).getShell(), tWiz);
 						dialog.open();
@@ -204,6 +173,13 @@
 	
 	
 	
+
+	/**
+	 * Order the list of units by normal defined units and automatically created nested units.
+	 * 
+	 * @param units List of units
+	 * @return Ordered list 
+	*/
     private List<org.eclipse.emf.henshin.model.Unit> orderUnits(EList<org.eclipse.emf.henshin.model.Unit> units){
     	List<org.eclipse.emf.henshin.model.Unit> outerUnits=new ArrayList<org.eclipse.emf.henshin.model.Unit>();
     	List<org.eclipse.emf.henshin.model.Unit> innerUnits=new ArrayList<org.eclipse.emf.henshin.model.Unit>();
@@ -225,6 +201,14 @@
 		return innerUnits;		
 	}
 
+
+    /**
+     * Search in a list of units a unit by its name
+     * 
+     * @param units List of units
+     * @param name Name of the searched unit
+     * @return Unit-Object with the given name
+     */
    private org.eclipse.emf.henshin.model.Unit getUnitByName(List<org.eclipse.emf.henshin.model.Unit> units,String name){
     	for(org.eclipse.emf.henshin.model.Unit unit:units){
     		if(unit.getName().equals(name)){
diff --git a/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/handler/TransformHenshin_TextHandler.java b/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/handler/TransformHenshin_TextHandler.java
index be0cfd6..493fee8 100644
--- a/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/handler/TransformHenshin_TextHandler.java
+++ b/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/handler/TransformHenshin_TextHandler.java
@@ -1,9 +1,7 @@
 package org.eclipse.emf.henshin.text.ui.handler;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.List;
 
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
@@ -20,17 +18,8 @@
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecore.util.Diagnostician;
 
-import org.eclipse.emf.henshin.text.henshin_text.Model;
-import org.eclipse.emf.henshin.text.henshin_text.ModelElement;
-import org.eclipse.emf.henshin.text.henshin_text.Unit;
-import org.eclipse.emf.henshin.text.ui.util.ModifyModelUnits;
+import org.eclipse.emf.henshin.text.ui.util.Transformation;
 import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.m2m.qvt.oml.BasicModelExtent;
-import org.eclipse.m2m.qvt.oml.ExecutionContext;
-import org.eclipse.m2m.qvt.oml.ExecutionContextImpl;
-import org.eclipse.m2m.qvt.oml.ExecutionDiagnostic;
-import org.eclipse.m2m.qvt.oml.ModelExtent;
-import org.eclipse.m2m.qvt.oml.TransformationExecutor;
 import org.eclipse.ui.IEditorDescriptor;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.PartInitException;
@@ -56,35 +45,12 @@
         Resource henshin_textResource = henshin_textResourceSet.getResource(henshin_textUri, true);
         Diagnostic diagnostic = Diagnostician.INSTANCE.validate(henshin_textResource.getContents().get(0));
         if(henshin_textResource.getErrors().isEmpty()&&((diagnostic.getSeverity()==Diagnostic.OK)||(diagnostic.getSeverity()==Diagnostic.WARNING))){
-        
-        	//Modify Units
-            List<Unit> unitList=new ArrayList<Unit>();
-            List<Unit> resultUnitList=new ArrayList<Unit>();
-            ModifyModelUnits modifyUnit=new ModifyModelUnits();
-    		for (ModelElement modelElement : ((Model) henshin_textResource.getContents().get(0)).getTransformationsystem()) {
-    			if(modelElement instanceof Unit){
-    				unitList.add((Unit)modelElement);	
-    			}
-    		}
-    		for(Unit unit:unitList){
-				resultUnitList.addAll(modifyUnit.flat(unit,0,null));
-			}
-			((Model) henshin_textResource.getContents().get(0)).getTransformationsystem().removeAll(unitList);
-			((Model) henshin_textResource.getContents().get(0)).getTransformationsystem().addAll(resultUnitList);
-      
-			//Transform henshin_text2henshin
-			URI transformationURI = URI.createURI("platform:/plugin/org.eclipse.emf.henshin.text.transformation/transforms/Henshin_text2HenshinTransformation/Henshin_text2HenshinTransformation.qvto");
-			TransformationExecutor executor = new TransformationExecutor(transformationURI);
-			ExecutionContext context = new ExecutionContextImpl();
-			ModelExtent source_HenshinText = new BasicModelExtent(henshin_textResource.getContents());		
-			ModelExtent target_Henshin = new BasicModelExtent();
-			ExecutionDiagnostic result = executor.execute(context, source_HenshinText, target_Henshin);
-       
-			if(result.getSeverity() == Diagnostic.OK){
-				ResourceSet resourceSetTransform = new ResourceSetImpl();
-				String henshinUri=henshin_textUri.toString().replace(".henshin_text","_henshin_text")+".henshin";
-				Resource resourceResult = resourceSetTransform.createResource(URI.createURI(henshinUri));
-				resourceResult.getContents().addAll(target_Henshin.getContents());
+			ResourceSet resourceSetTransform = new ResourceSetImpl();
+			String henshinUri=henshin_textUri.toString().replace(".henshin_text","_henshin_text")+".henshin";
+			Resource resourceResult = resourceSetTransform.createResource(URI.createURI(henshinUri));
+			Transformation transformation=new Transformation();
+			resourceResult=transformation.transformHenshin_textToHenshin(henshin_textResource,"platform:/plugin/org.eclipse.emf.henshin.text.transformation/transforms/Henshin_text2HenshinTransformation/Henshin_text2HenshinTransformation.qvto","");
+			if(resourceResult!=null){
 				try {
 					resourceResult.save(Collections.EMPTY_MAP);
 					
diff --git a/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/util/ModifyModelUnits.xtend b/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/util/ModifyModelUnits.xtend
index 527fd07..e88edcb 100644
--- a/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/util/ModifyModelUnits.xtend
+++ b/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/util/ModifyModelUnits.xtend
@@ -28,6 +28,16 @@
 
 public class ModifyModelUnits {
 	
+	private var long seed
+	private var testSetup=false
+	
+	new(long seed){
+		this.seed=seed
+		this.testSetup=true
+	}
+	
+	new(){}
+	
 	/**
 	 * Entpackt die in einer Unit geschachtelten Subunits in einzelne elementare Units
 	 * 
@@ -37,12 +47,12 @@
 	 */
 	def List<Unit> flat(Unit unit,int level,Call unitCall){
 		var List<Unit> erg=new ArrayList<Unit>()
-		var randomGenerator = new Random()
+		
 		if(isSequence(unit.unitElements)==false){
 			if(unit.unitElements.get(0) instanceof ConditionalUnitImpl){
 				var help=unit.unitElements.get(0) as ConditionalUnit
 				if(!isCallOnly(help.getIf)){
-					var Unit newSubUnit=createUnit(unit.name+"IF"+level+"_"+randomGenerator.nextInt(1000),help.getIf,unit.parameters.clone())
+					var Unit newSubUnit=createUnit(unit.name+"IF"+level+"_"+returnRandomeNumber(),help.getIf,unit.parameters.clone())
 					(unit.unitElements.get(0)as ConditionalUnit).getIf.clear()
 					var Call call=Henshin_textFactory.eINSTANCE.createCall()
 					call.setElementCall(newSubUnit)
@@ -61,7 +71,7 @@
 					}
 				}
 				if(!isCallOnly(help.getThen)){
-					var Unit newSubUnit=createUnit(unit.name+"THEN"+level+"_"+randomGenerator.nextInt(1000),help.getThen,unit.parameters.clone())
+					var Unit newSubUnit=createUnit(unit.name+"THEN"+level+"_"+returnRandomeNumber(),help.getThen,unit.parameters.clone())
 					(unit.unitElements.get(0)as ConditionalUnit).getThen.clear()
 					var Call call=Henshin_textFactory.eINSTANCE.createCall()
 					call.setElementCall(newSubUnit)
@@ -81,7 +91,7 @@
 				}
 				if(help.getElse().size>0){
 					if(!isCallOnly(help.getElse)){
-						var Unit newSubUnit=createUnit(unit.name+"ELSE"+level+"_"+randomGenerator.nextInt(1000),help.getElse,unit.parameters.clone())
+						var Unit newSubUnit=createUnit(unit.name+"ELSE"+level+"_"+returnRandomeNumber(),help.getElse,unit.parameters.clone())
 						(unit.unitElements.get(0)as ConditionalUnit).getElse.clear()
 						var Call call=Henshin_textFactory.eINSTANCE.createCall()
 						call.setElementCall(newSubUnit)
@@ -104,7 +114,7 @@
 			}else if(unit.unitElements.get(0) instanceof IteratedUnitImpl){
 				var help=unit.unitElements.get(0) as IteratedUnit
 				if(!isCallOnly(help.subElement)){
-					var Unit newSubUnit=createUnit(unit.name+"ITERATED"+level+"_"+randomGenerator.nextInt(1000),help.subElement,unit.parameters.clone())
+					var Unit newSubUnit=createUnit(unit.name+"ITERATED"+level+"_"+returnRandomeNumber(),help.subElement,unit.parameters.clone())
 					(unit.unitElements.get(0)as IteratedUnit).subElement.clear()
 					var Call call=Henshin_textFactory.eINSTANCE.createCall()
 					call.setElementCall(newSubUnit)
@@ -132,7 +142,7 @@
 			}else if(unit.unitElements.get(0) instanceof LoopUnitImpl){
 				var help=unit.unitElements.get(0) as LoopUnit
 				if(!isCallOnly(help.subElement)){
-					var Unit newSubUnit=createUnit(unit.name+"LOOP"+level+"_"+randomGenerator.nextInt(1000),help.subElement,unit.parameters.clone())
+					var Unit newSubUnit=createUnit(unit.name+"LOOP"+level+"_"+returnRandomeNumber(),help.subElement,unit.parameters.clone())
 					(unit.unitElements.get(0)as LoopUnit).subElement.clear()
 					var Call call=Henshin_textFactory.eINSTANCE.createCall()
 					call.setElementCall(newSubUnit)
@@ -159,7 +169,7 @@
 				var index=0
 				for(sub:help.listOfLists){
 					if(!isCallOnly(sub.subElements)){
-						var Unit newSubUnit=createUnit(unit.name+"PRIORITY"+level+"_"+index+"_"+randomGenerator.nextInt(1000),sub.subElements,unit.parameters.clone())
+						var Unit newSubUnit=createUnit(unit.name+"PRIORITY"+level+"_"+index+"_"+returnRandomeNumber(),sub.subElements,unit.parameters.clone())
 						(unit.unitElements.get(0)as PriorityUnit).listOfLists.get(index).subElements.clear()
 						var Call call=Henshin_textFactory.eINSTANCE.createCall()
 						call.setElementCall(newSubUnit)
@@ -185,7 +195,7 @@
 				var index=0
 				for(sub:help.listOfLists){
 					if(!isCallOnly(sub.subElements)){
-						var Unit newSubUnit=createUnit(unit.name+"INDEPENDENT"+level+"_"+index+"_"+randomGenerator.nextInt(1000),sub.subElements,unit.parameters.clone())
+						var Unit newSubUnit=createUnit(unit.name+"INDEPENDENT"+level+"_"+index+"_"+returnRandomeNumber(),sub.subElements,unit.parameters.clone())
 						(unit.unitElements.get(0)as IndependentUnit).listOfLists.get(index).subElements.clear()
 						var Call call=Henshin_textFactory.eINSTANCE.createCall()
 						call.setElementCall(newSubUnit)
@@ -221,7 +231,7 @@
 						}else{
 							subElements.add(element)
 						}
-						var Unit newSubUnit=createUnit(unit.name+"Sequence"+level+"_"+index+"_"+randomGenerator.nextInt(1000),subElements,unit.parameters.clone())
+						var Unit newSubUnit=createUnit(unit.name+"Sequence"+level+"_"+index+"_"+returnRandomeNumber(),subElements,unit.parameters.clone())
 						var Call call=Henshin_textFactory.eINSTANCE.createCall()
 						call.setElementCall(newSubUnit)
 						call.parameters.addAll(unit.parameters)
@@ -246,6 +256,17 @@
 		return erg
 	}
 	
+	private def returnRandomeNumber(){
+		if(this.testSetup){
+			var randomGenerator = new Random(this.seed)
+			return randomGenerator.nextInt(1000)
+		}else{
+			var randomGenerator = new Random()
+			return randomGenerator.nextInt(1000)
+		}
+		
+	}
+	
 /**
  * Gibt eine Kopie des übergebenen ParameterType-Objekts zurück
  * 
@@ -315,6 +336,7 @@
 		for(param:parameter){
 			var Parameter helpParameter=Henshin_textFactory.eINSTANCE.createParameter()
 			helpParameter.setName(param.name+"_"+name)
+			helpParameter.setKind(param.kind)
 			helpParameter.setType(getParameterType(param.type))
 			helpUnit.parameters.add(helpParameter)
 		}
diff --git a/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/util/Transformation.xtend b/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/util/Transformation.xtend
new file mode 100644
index 0000000..a0e53e8
--- /dev/null
+++ b/plugins/org.eclipse.emf.henshin.text.ui/src/org/eclipse/emf/henshin/text/ui/util/Transformation.xtend
@@ -0,0 +1,92 @@
+package org.eclipse.emf.henshin.text.ui.util
+
+import org.eclipse.emf.ecore.resource.Resource
+import java.util.ArrayList
+import org.eclipse.emf.henshin.text.henshin_text.Unit
+import org.eclipse.emf.henshin.text.henshin_text.Model
+import org.eclipse.emf.common.util.URI
+import org.eclipse.m2m.qvt.oml.TransformationExecutor
+import org.eclipse.m2m.qvt.oml.ExecutionContext
+import org.eclipse.m2m.qvt.oml.ModelExtent
+import org.eclipse.m2m.qvt.oml.ExecutionDiagnostic
+import org.eclipse.m2m.qvt.oml.ExecutionContextImpl
+import org.eclipse.m2m.qvt.oml.BasicModelExtent
+import org.eclipse.emf.common.util.Diagnostic
+import org.eclipse.emf.henshin.model.resource.HenshinResourceSet
+import java.io.File
+
+import org.eclipse.emf.henshin.text.Henshin_textStandaloneSetup
+import org.eclipse.emf.henshin.text.ui.util.ModifyModelUnits
+import org.eclipse.xtext.resource.IResourceServiceProvider
+import org.eclipse.xtext.resource.XtextResource
+import org.eclipse.xtext.resource.XtextResourceSet
+
+import com.google.inject.Injector
+
+class Transformation {
+	 /**
+	  * Preparing units and call the Henshin_text to Henshin transformation
+	  * 
+	  * @param textResource Normal case: Henshin_text Resource. Test case: null
+	  * @param qvtoPath Path of the qvto transformation
+	  * @param henshin_textPath Normal case: empty String. Test case: Path of the Henshin_text file
+	  * @return Resource of the transformed Henshin_text file
+	  */
+	def Resource transformHenshin_textToHenshin(Resource textResource,String qvtoPath,String henshin_textPath){
+		var HenshinResourceSet henshinResourceSet = new HenshinResourceSet()
+		var Resource henshin_textResource
+		if(textResource!=null){
+			henshin_textResource = textResource
+		}else{
+			//Load henshin_textFile standalone and imported EPackages
+			new org.eclipse.emf.mwe.utils.StandaloneSetup().setPlatformUri("..")
+			var Injector injector = new Henshin_textStandaloneSetup().createInjectorAndDoEMFRegistration()
+			var IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider)
+			IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("ecore", serviceProvider)
+			var XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet)
+			resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE)
+			var URI henshin_textUri=org.eclipse.emf.common.util.URI.createURI("platform:/resource/org.eclipse.emf.henshin.text.transformation.tests/"+henshin_textPath)
+
+			var String TestcasePath=henshin_textPath.replace(henshin_textUri.lastSegment(), "")
+			var File[] projectFolders = new File(TestcasePath).listFiles()	
+			for(var i=0;i<projectFolders.length;i++){
+				var nameArray=projectFolders.get(i).getName().split("\\.")
+				if(nameArray.get((nameArray.length-1)).equals("ecore")){
+					resourceSet.getResource(org.eclipse.emf.common.util.URI.createURI("platform:/resource/org.eclipse.emf.henshin.text.transformation.tests/"+TestcasePath+projectFolders.get(i).getName()), true)
+				}
+			}
+			henshin_textResource = resourceSet.getResource(henshin_textUri, true)
+		}
+
+		//Modify Units
+		var ArrayList<Unit> unitList=new ArrayList<Unit>()
+		var ArrayList<Unit> resultUnitList=new ArrayList<Unit>() 
+		var ModifyModelUnits modifyUnit=new ModifyModelUnits(123)
+		for(modelElement:(henshin_textResource.getContents().get(0) as Model).getTransformationsystem()){
+			if(modelElement instanceof Unit){
+				unitList.add(modelElement as Unit)	
+			}
+		}
+		for(Unit unit:unitList){
+			resultUnitList.addAll(modifyUnit.flat(unit,0,null))
+		}
+		(henshin_textResource.getContents().get(0) as Model).getTransformationsystem().removeAll(unitList)
+		(henshin_textResource.getContents().get(0) as Model).getTransformationsystem().addAll(resultUnitList)
+
+		var URI transformationURI = org.eclipse.emf.common.util.URI.createURI(qvtoPath)
+		var TransformationExecutor executor = new TransformationExecutor(transformationURI)
+		var ExecutionContext context = new ExecutionContextImpl()
+		var ModelExtent source_HenshinText = new BasicModelExtent(henshin_textResource.getContents())		
+		var ModelExtent target_Henshin = new BasicModelExtent()
+		var ExecutionDiagnostic result = executor.execute(context, source_HenshinText, target_Henshin)
+		if(result.getSeverity()==Diagnostic.OK){	
+			var String henshinUri=henshin_textResource.getURI().toString().replace(".henshin_text","_henshin_text")+".henshin"
+			var Resource resourceResult = henshinResourceSet.createResource(URI.createURI(henshinUri))
+			resourceResult.getContents().addAll(target_Henshin.getContents())
+			return resourceResult
+		}else{
+			return null
+		}
+	}
+	
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.henshin.text.ui/xtend-gen/org/eclipse/emf/henshin/text/ui/util/.gitignore b/plugins/org.eclipse.emf.henshin.text.ui/xtend-gen/org/eclipse/emf/henshin/text/ui/util/.gitignore
index bd05203..dd88fc1 100644
--- a/plugins/org.eclipse.emf.henshin.text.ui/xtend-gen/org/eclipse/emf/henshin/text/ui/util/.gitignore
+++ b/plugins/org.eclipse.emf.henshin.text.ui/xtend-gen/org/eclipse/emf/henshin/text/ui/util/.gitignore
@@ -1,3 +1,4 @@
 /.ModifyModelUnits.java._trace
 /.ModifyModelUnits.xtendbin
 /ModifyModelUnits.java
+/.Transformation.java._trace
diff --git a/plugins/org.eclipse.emf.henshin.text/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.henshin.text/META-INF/MANIFEST.MF
index db4184b..d4133fe 100644
--- a/plugins/org.eclipse.emf.henshin.text/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.henshin.text/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
  org.eclipse.xtext.util,

  org.eclipse.xtend.lib,

  org.eclipse.emf.common

-Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-RequiredExecutionEnvironment: JavaSE-1.7

 Export-Package: org.eclipse.emf.henshin.text.henshin_text.impl,

  org.eclipse.emf.henshin.text.validation,

  org.eclipse.emf.henshin.text.henshin_text,

diff --git a/plugins/org.eclipse.emf.henshin.text/model/generated/Henshin_text.ecore b/plugins/org.eclipse.emf.henshin.text/model/generated/Henshin_text.ecore
index ed7e1e1..0d9bfa0 100644
--- a/plugins/org.eclipse.emf.henshin.text/model/generated/Henshin_text.ecore
+++ b/plugins/org.eclipse.emf.henshin.text/model/generated/Henshin_text.ecore
@@ -151,10 +151,18 @@
         eType="#//UnitElement" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Parameter">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ParameterKind"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//ParameterType"
         containment="true"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ParameterKind">
+    <eLiterals name="UNKNOWN" literal="UNKNOWN"/>
+    <eLiterals name="IN" value="1" literal="IN"/>
+    <eLiterals name="OUT" value="2" literal="OUT"/>
+    <eLiterals name="INOUT" value="3" literal="INOUT"/>
+    <eLiterals name="VAR" value="4" literal="VAR"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ParameterType">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="enumType" eType="#//Type"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/>
diff --git a/plugins/org.eclipse.emf.henshin.text/model/generated/Henshin_text.genmodel b/plugins/org.eclipse.emf.henshin.text/model/generated/Henshin_text.genmodel
index 2ac5feb..2438ae2 100644
--- a/plugins/org.eclipse.emf.henshin.text/model/generated/Henshin_text.genmodel
+++ b/plugins/org.eclipse.emf.henshin.text/model/generated/Henshin_text.genmodel
@@ -3,9 +3,16 @@
     xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="generated by Xtext 2.10.0" modelDirectory="/org.eclipse.emf.henshin.text/src-gen"
     modelPluginID="org.eclipse.emf.henshin.text" forceOverwrite="true" modelName="Henshin_text"
     updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
-    complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.11">
+    complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.12">
   <genPackages prefix="Henshin_text" basePackage="org.eclipse.emf.henshin.text" disposableProviderFactory="true"
       fileExtensions="henshin_text" ecorePackage="Henshin_text.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="Henshin_text.ecore#//ParameterKind">
+      <genEnumLiterals ecoreEnumLiteral="Henshin_text.ecore#//ParameterKind/UNKNOWN"/>
+      <genEnumLiterals ecoreEnumLiteral="Henshin_text.ecore#//ParameterKind/IN"/>
+      <genEnumLiterals ecoreEnumLiteral="Henshin_text.ecore#//ParameterKind/OUT"/>
+      <genEnumLiterals ecoreEnumLiteral="Henshin_text.ecore#//ParameterKind/INOUT"/>
+      <genEnumLiterals ecoreEnumLiteral="Henshin_text.ecore#//ParameterKind/VAR"/>
+    </genEnums>
     <genEnums typeSafeEnumCompatible="false" ecoreEnum="Henshin_text.ecore#//Type">
       <genEnumLiterals ecoreEnumLiteral="Henshin_text.ecore#//Type/eBigDecimal"/>
       <genEnumLiterals ecoreEnumLiteral="Henshin_text.ecore#//Type/eBigInteger"/>
@@ -163,6 +170,7 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Henshin_text.ecore#//LoopUnit/subElement"/>
     </genClasses>
     <genClasses ecoreClass="Henshin_text.ecore#//Parameter">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Henshin_text.ecore#//Parameter/kind"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Henshin_text.ecore#//Parameter/name"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Henshin_text.ecore#//Parameter/type"/>
     </genClasses>
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/Henshin_text.xtextbin b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/Henshin_text.xtextbin
index 28fa991..11b1fa5 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/Henshin_text.xtextbin
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/Henshin_text.xtextbin
Binary files differ
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/Henshin_textPackage.java b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/Henshin_textPackage.java
index f8f4b78..7b99a30 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/Henshin_textPackage.java
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/Henshin_textPackage.java
@@ -1339,13 +1339,22 @@
   int PARAMETER = 37;
 
   /**
+   * The feature id for the '<em><b>Kind</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PARAMETER__KIND = 0;
+
+  /**
    * The feature id for the '<em><b>Name</b></em>' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @generated
    * @ordered
    */
-  int PARAMETER__NAME = 0;
+  int PARAMETER__NAME = 1;
 
   /**
    * The feature id for the '<em><b>Type</b></em>' containment reference.
@@ -1354,7 +1363,7 @@
    * @generated
    * @ordered
    */
-  int PARAMETER__TYPE = 1;
+  int PARAMETER__TYPE = 2;
 
   /**
    * The number of structural features of the '<em>Parameter</em>' class.
@@ -1363,7 +1372,7 @@
    * @generated
    * @ordered
    */
-  int PARAMETER_FEATURE_COUNT = 2;
+  int PARAMETER_FEATURE_COUNT = 3;
 
   /**
    * The meta object id for the '{@link org.eclipse.emf.henshin.text.henshin_text.impl.ParameterTypeImpl <em>Parameter Type</em>}' class.
@@ -2274,6 +2283,16 @@
   int BOOL_VALUE_FEATURE_COUNT = EXPRESSION_FEATURE_COUNT + 1;
 
   /**
+   * The meta object id for the '{@link org.eclipse.emf.henshin.text.henshin_text.ParameterKind <em>Parameter Kind</em>}' enum.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.emf.henshin.text.henshin_text.ParameterKind
+   * @see org.eclipse.emf.henshin.text.henshin_text.impl.Henshin_textPackageImpl#getParameterKind()
+   * @generated
+   */
+  int PARAMETER_KIND = 64;
+
+  /**
    * The meta object id for the '{@link org.eclipse.emf.henshin.text.henshin_text.Type <em>Type</em>}' enum.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -2281,7 +2300,7 @@
    * @see org.eclipse.emf.henshin.text.henshin_text.impl.Henshin_textPackageImpl#getType()
    * @generated
    */
-  int TYPE = 64;
+  int TYPE = 65;
 
 
   /**
@@ -3248,6 +3267,17 @@
   EClass getParameter();
 
   /**
+   * Returns the meta object for the attribute '{@link org.eclipse.emf.henshin.text.henshin_text.Parameter#getKind <em>Kind</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Kind</em>'.
+   * @see org.eclipse.emf.henshin.text.henshin_text.Parameter#getKind()
+   * @see #getParameter()
+   * @generated
+   */
+  EAttribute getParameter_Kind();
+
+  /**
    * Returns the meta object for the attribute '{@link org.eclipse.emf.henshin.text.henshin_text.Parameter#getName <em>Name</em>}'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -3981,6 +4011,16 @@
   EAttribute getBoolValue_Value();
 
   /**
+   * Returns the meta object for enum '{@link org.eclipse.emf.henshin.text.henshin_text.ParameterKind <em>Parameter Kind</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for enum '<em>Parameter Kind</em>'.
+   * @see org.eclipse.emf.henshin.text.henshin_text.ParameterKind
+   * @generated
+   */
+  EEnum getParameterKind();
+
+  /**
    * Returns the meta object for enum '{@link org.eclipse.emf.henshin.text.henshin_text.Type <em>Type</em>}'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -4818,6 +4858,14 @@
     EClass PARAMETER = eINSTANCE.getParameter();
 
     /**
+     * The meta object literal for the '<em><b>Kind</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute PARAMETER__KIND = eINSTANCE.getParameter_Kind();
+
+    /**
      * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -5422,6 +5470,16 @@
     EAttribute BOOL_VALUE__VALUE = eINSTANCE.getBoolValue_Value();
 
     /**
+     * The meta object literal for the '{@link org.eclipse.emf.henshin.text.henshin_text.ParameterKind <em>Parameter Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.emf.henshin.text.henshin_text.ParameterKind
+     * @see org.eclipse.emf.henshin.text.henshin_text.impl.Henshin_textPackageImpl#getParameterKind()
+     * @generated
+     */
+    EEnum PARAMETER_KIND = eINSTANCE.getParameterKind();
+
+    /**
      * The meta object literal for the '{@link org.eclipse.emf.henshin.text.henshin_text.Type <em>Type</em>}' enum.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/Parameter.java b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/Parameter.java
index 07fd8d8..4e5a8a7 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/Parameter.java
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/Parameter.java
@@ -14,6 +14,7 @@
  * The following features are supported:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.emf.henshin.text.henshin_text.Parameter#getKind <em>Kind</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.text.henshin_text.Parameter#getName <em>Name</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.text.henshin_text.Parameter#getType <em>Type</em>}</li>
  * </ul>
@@ -25,6 +26,35 @@
 public interface Parameter extends EObject
 {
   /**
+   * Returns the value of the '<em><b>Kind</b></em>' attribute.
+   * The literals are from the enumeration {@link org.eclipse.emf.henshin.text.henshin_text.ParameterKind}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Kind</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Kind</em>' attribute.
+   * @see org.eclipse.emf.henshin.text.henshin_text.ParameterKind
+   * @see #setKind(ParameterKind)
+   * @see org.eclipse.emf.henshin.text.henshin_text.Henshin_textPackage#getParameter_Kind()
+   * @model
+   * @generated
+   */
+  ParameterKind getKind();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.emf.henshin.text.henshin_text.Parameter#getKind <em>Kind</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Kind</em>' attribute.
+   * @see org.eclipse.emf.henshin.text.henshin_text.ParameterKind
+   * @see #getKind()
+   * @generated
+   */
+  void setKind(ParameterKind value);
+
+  /**
    * Returns the value of the '<em><b>Name</b></em>' attribute.
    * <!-- begin-user-doc -->
    * <p>
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/Henshin_textFactoryImpl.java b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/Henshin_textFactoryImpl.java
index eab26e7..c05b2f2 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/Henshin_textFactoryImpl.java
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/Henshin_textFactoryImpl.java
@@ -145,6 +145,8 @@
   {
     switch (eDataType.getClassifierID())
     {
+      case Henshin_textPackage.PARAMETER_KIND:
+        return createParameterKindFromString(eDataType, initialValue);
       case Henshin_textPackage.TYPE:
         return createTypeFromString(eDataType, initialValue);
       default:
@@ -162,6 +164,8 @@
   {
     switch (eDataType.getClassifierID())
     {
+      case Henshin_textPackage.PARAMETER_KIND:
+        return convertParameterKindToString(eDataType, instanceValue);
       case Henshin_textPackage.TYPE:
         return convertTypeToString(eDataType, instanceValue);
       default:
@@ -878,6 +882,28 @@
    * <!-- end-user-doc -->
    * @generated
    */
+  public ParameterKind createParameterKindFromString(EDataType eDataType, String initialValue)
+  {
+    ParameterKind result = ParameterKind.get(initialValue);
+    if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+    return result;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertParameterKindToString(EDataType eDataType, Object instanceValue)
+  {
+    return instanceValue == null ? null : instanceValue.toString();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
   public Type createTypeFromString(EDataType eDataType, String initialValue)
   {
     Type result = Type.get(initialValue);
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/Henshin_textPackageImpl.java b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/Henshin_textPackageImpl.java
index 3609556..cf9ea93 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/Henshin_textPackageImpl.java
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/Henshin_textPackageImpl.java
@@ -63,6 +63,7 @@
 import org.eclipse.emf.henshin.text.henshin_text.ORorXOR;
 import org.eclipse.emf.henshin.text.henshin_text.OrExpression;
 import org.eclipse.emf.henshin.text.henshin_text.Parameter;
+import org.eclipse.emf.henshin.text.henshin_text.ParameterKind;
 import org.eclipse.emf.henshin.text.henshin_text.ParameterType;
 import org.eclipse.emf.henshin.text.henshin_text.ParameterValue;
 import org.eclipse.emf.henshin.text.henshin_text.PlusExpression;
@@ -539,6 +540,13 @@
    * <!-- end-user-doc -->
    * @generated
    */
+  private EEnum parameterKindEEnum = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
   private EEnum typeEEnum = null;
 
   /**
@@ -1519,7 +1527,7 @@
    * <!-- end-user-doc -->
    * @generated
    */
-  public EAttribute getParameter_Name()
+  public EAttribute getParameter_Kind()
   {
     return (EAttribute)parameterEClass.getEStructuralFeatures().get(0);
   }
@@ -1529,9 +1537,19 @@
    * <!-- end-user-doc -->
    * @generated
    */
+  public EAttribute getParameter_Name()
+  {
+    return (EAttribute)parameterEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
   public EReference getParameter_Type()
   {
-    return (EReference)parameterEClass.getEStructuralFeatures().get(1);
+    return (EReference)parameterEClass.getEStructuralFeatures().get(2);
   }
 
   /**
@@ -2209,6 +2227,16 @@
    * <!-- end-user-doc -->
    * @generated
    */
+  public EEnum getParameterKind()
+  {
+    return parameterKindEEnum;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
   public EEnum getType()
   {
     return typeEEnum;
@@ -2372,6 +2400,7 @@
     createEReference(loopUnitEClass, LOOP_UNIT__SUB_ELEMENT);
 
     parameterEClass = createEClass(PARAMETER);
+    createEAttribute(parameterEClass, PARAMETER__KIND);
     createEAttribute(parameterEClass, PARAMETER__NAME);
     createEReference(parameterEClass, PARAMETER__TYPE);
 
@@ -2469,6 +2498,7 @@
     createEAttribute(boolValueEClass, BOOL_VALUE__VALUE);
 
     // Create enums
+    parameterKindEEnum = createEEnum(PARAMETER_KIND);
     typeEEnum = createEEnum(TYPE);
   }
 
@@ -2681,6 +2711,7 @@
     initEReference(getLoopUnit_SubElement(), this.getUnitElement(), null, "subElement", null, 0, -1, LoopUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
     initEClass(parameterEClass, Parameter.class, "Parameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getParameter_Kind(), this.getParameterKind(), "kind", null, 0, 1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEAttribute(getParameter_Name(), ecorePackage.getEString(), "name", null, 0, 1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
     initEReference(getParameter_Type(), this.getParameterType(), null, "type", null, 0, 1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
@@ -2778,6 +2809,13 @@
     initEAttribute(getBoolValue_Value(), ecorePackage.getEBoolean(), "value", null, 0, 1, BoolValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
     // Initialize enums and add enum literals
+    initEEnum(parameterKindEEnum, ParameterKind.class, "ParameterKind");
+    addEEnumLiteral(parameterKindEEnum, ParameterKind.UNKNOWN);
+    addEEnumLiteral(parameterKindEEnum, ParameterKind.IN);
+    addEEnumLiteral(parameterKindEEnum, ParameterKind.OUT);
+    addEEnumLiteral(parameterKindEEnum, ParameterKind.INOUT);
+    addEEnumLiteral(parameterKindEEnum, ParameterKind.VAR);
+
     initEEnum(typeEEnum, Type.class, "Type");
     addEEnumLiteral(typeEEnum, Type.EBIG_DECIMAL);
     addEEnumLiteral(typeEEnum, Type.EBIG_INTEGER);
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/ParameterImpl.java b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/ParameterImpl.java
index 0b465a9..72d622b 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/ParameterImpl.java
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/henshin_text/impl/ParameterImpl.java
@@ -14,6 +14,7 @@
 
 import org.eclipse.emf.henshin.text.henshin_text.Henshin_textPackage;
 import org.eclipse.emf.henshin.text.henshin_text.Parameter;
+import org.eclipse.emf.henshin.text.henshin_text.ParameterKind;
 import org.eclipse.emf.henshin.text.henshin_text.ParameterType;
 
 /**
@@ -24,6 +25,7 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.emf.henshin.text.henshin_text.impl.ParameterImpl#getKind <em>Kind</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.text.henshin_text.impl.ParameterImpl#getName <em>Name</em>}</li>
  *   <li>{@link org.eclipse.emf.henshin.text.henshin_text.impl.ParameterImpl#getType <em>Type</em>}</li>
  * </ul>
@@ -33,6 +35,26 @@
 public class ParameterImpl extends MinimalEObjectImpl.Container implements Parameter
 {
   /**
+   * The default value of the '{@link #getKind() <em>Kind</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getKind()
+   * @generated
+   * @ordered
+   */
+  protected static final ParameterKind KIND_EDEFAULT = ParameterKind.UNKNOWN;
+
+  /**
+   * The cached value of the '{@link #getKind() <em>Kind</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getKind()
+   * @generated
+   * @ordered
+   */
+  protected ParameterKind kind = KIND_EDEFAULT;
+
+  /**
    * The default value of the '{@link #getName() <em>Name</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -88,6 +110,29 @@
    * <!-- end-user-doc -->
    * @generated
    */
+  public ParameterKind getKind()
+  {
+    return kind;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setKind(ParameterKind newKind)
+  {
+    ParameterKind oldKind = kind;
+    kind = newKind == null ? KIND_EDEFAULT : newKind;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, Henshin_textPackage.PARAMETER__KIND, oldKind, kind));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
   public String getName()
   {
     return name;
@@ -180,6 +225,8 @@
   {
     switch (featureID)
     {
+      case Henshin_textPackage.PARAMETER__KIND:
+        return getKind();
       case Henshin_textPackage.PARAMETER__NAME:
         return getName();
       case Henshin_textPackage.PARAMETER__TYPE:
@@ -198,6 +245,9 @@
   {
     switch (featureID)
     {
+      case Henshin_textPackage.PARAMETER__KIND:
+        setKind((ParameterKind)newValue);
+        return;
       case Henshin_textPackage.PARAMETER__NAME:
         setName((String)newValue);
         return;
@@ -218,6 +268,9 @@
   {
     switch (featureID)
     {
+      case Henshin_textPackage.PARAMETER__KIND:
+        setKind(KIND_EDEFAULT);
+        return;
       case Henshin_textPackage.PARAMETER__NAME:
         setName(NAME_EDEFAULT);
         return;
@@ -238,6 +291,8 @@
   {
     switch (featureID)
     {
+      case Henshin_textPackage.PARAMETER__KIND:
+        return kind != KIND_EDEFAULT;
       case Henshin_textPackage.PARAMETER__NAME:
         return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
       case Henshin_textPackage.PARAMETER__TYPE:
@@ -257,7 +312,9 @@
     if (eIsProxy()) return super.toString();
 
     StringBuffer result = new StringBuffer(super.toString());
-    result.append(" (name: ");
+    result.append(" (kind: ");
+    result.append(kind);
+    result.append(", name: ");
     result.append(name);
     result.append(')');
     return result.toString();
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_text.g b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_text.g
index 5679090..78d2bbf 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_text.g
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_text.g
@@ -3004,9 +3004,28 @@
 	(
 		(
 			(
-				lv_name_0_0=RULE_ID
 				{
-					newLeafNode(lv_name_0_0, grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0());
+					newCompositeNode(grammarAccess.getParameterAccess().getKindParameterKindRuleEnumRuleCall_0_0());
+				}
+				lv_kind_0_0=ruleParameterKindRule
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getParameterRule());
+					}
+					set(
+						$current,
+						"kind",
+						lv_kind_0_0,
+						"org.eclipse.emf.henshin.text.Henshin_text.ParameterKindRule");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		(
+			(
+				lv_name_1_0=RULE_ID
+				{
+					newLeafNode(lv_name_1_0, grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_1_0());
 				}
 				{
 					if ($current==null) {
@@ -3015,21 +3034,21 @@
 					setWithLastConsumed(
 						$current,
 						"name",
-						lv_name_0_0,
+						lv_name_1_0,
 						"org.eclipse.xtext.common.Terminals.ID");
 				}
 			)
 		)
-		otherlv_1=':'
+		otherlv_2=':'
 		{
-			newLeafNode(otherlv_1, grammarAccess.getParameterAccess().getColonKeyword_1());
+			newLeafNode(otherlv_2, grammarAccess.getParameterAccess().getColonKeyword_2());
 		}
 		(
 			(
 				{
-					newCompositeNode(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_2_0());
+					newCompositeNode(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_3_0());
 				}
-				lv_type_2_0=ruleParameterType
+				lv_type_3_0=ruleParameterType
 				{
 					if ($current==null) {
 						$current = createModelElementForParent(grammarAccess.getParameterRule());
@@ -3037,7 +3056,7 @@
 					set(
 						$current,
 						"type",
-						lv_type_2_0,
+						lv_type_3_0,
 						"org.eclipse.emf.henshin.text.Henshin_text.ParameterType");
 					afterParserOrEnumRuleCall();
 				}
@@ -4048,6 +4067,49 @@
 	)
 ;
 
+// Rule ParameterKindRule
+ruleParameterKindRule returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='IN'
+			{
+				$current = grammarAccess.getParameterKindRuleAccess().getINEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getParameterKindRuleAccess().getINEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='OUT'
+			{
+				$current = grammarAccess.getParameterKindRuleAccess().getOUTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getParameterKindRuleAccess().getOUTEnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='INOUT'
+			{
+				$current = grammarAccess.getParameterKindRuleAccess().getINOUTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getParameterKindRuleAccess().getINOUTEnumLiteralDeclaration_2());
+			}
+		)
+		    |
+		(
+			enumLiteral_3='VAR'
+			{
+				$current = grammarAccess.getParameterKindRuleAccess().getVAREnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_3, grammarAccess.getParameterKindRuleAccess().getVAREnumLiteralDeclaration_3());
+			}
+		)
+	)
+;
+
 // Rule Type
 ruleType returns [Enumerator current=null]
 @init {
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_text.tokens b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_text.tokens
index 6695c44..a319bbc 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_text.tokens
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_text.tokens
@@ -17,40 +17,44 @@
 '>'=64
 '>='=62
 'AND'=46
-'EBigDecimal'=70
-'EBigInteger'=71
-'EBoolean'=72
-'EBooleanObject'=73
-'EByte'=74
-'EByteArray'=75
-'EByteObject'=76
-'EChar'=77
-'ECharacterObject'=78
-'EDate'=79
-'EDiagnosticChain'=80
-'EDouble'=81
-'EDoubleObject'=82
-'EEList'=83
-'EEnumerator'=84
-'EFeatureMap'=85
-'EFeatureMapEntry'=86
-'EFloat'=87
-'EFloatObject'=88
-'EInt'=89
-'EIntegerObject'=90
-'EInvocationTargetException'=92
-'EJavaClass'=93
-'EJavaObject'=94
-'ELong'=95
-'ELongObject'=96
-'EMap'=97
-'EResource'=98
-'EResourceSet'=99
-'EShort'=100
-'EShortObject'=101
-'EString'=102
-'ETreeIterator'=91
+'EBigDecimal'=74
+'EBigInteger'=75
+'EBoolean'=76
+'EBooleanObject'=77
+'EByte'=78
+'EByteArray'=79
+'EByteObject'=80
+'EChar'=81
+'ECharacterObject'=82
+'EDate'=83
+'EDiagnosticChain'=84
+'EDouble'=85
+'EDoubleObject'=86
+'EEList'=87
+'EEnumerator'=88
+'EFeatureMap'=89
+'EFeatureMapEntry'=90
+'EFloat'=91
+'EFloatObject'=92
+'EInt'=93
+'EIntegerObject'=94
+'EInvocationTargetException'=96
+'EJavaClass'=97
+'EJavaObject'=98
+'ELong'=99
+'ELongObject'=100
+'EMap'=101
+'EResource'=102
+'EResourceSet'=103
+'EShort'=104
+'EShortObject'=105
+'EString'=106
+'ETreeIterator'=95
+'IN'=70
+'INOUT'=72
 'OR'=44
+'OUT'=71
+'VAR'=73
 'XOR'=45
 '['=26
 ']'=27
@@ -100,6 +104,10 @@
 T__100=100
 T__101=101
 T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
 T__13=13
 T__14=14
 T__15=15
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_textLexer.java b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_textLexer.java
index e07f5d8..355c8d5 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_textLexer.java
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_textLexer.java
@@ -109,9 +109,13 @@
     public static final int T__88=88;
     public static final int T__89=89;
     public static final int T__84=84;
+    public static final int T__104=104;
     public static final int T__85=85;
+    public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
+    public static final int T__105=105;
 
     // delegates
     // delegators
@@ -1311,10 +1315,10 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:68:7: ( 'EBigDecimal' )
-            // InternalHenshin_text.g:68:9: 'EBigDecimal'
+            // InternalHenshin_text.g:68:7: ( 'IN' )
+            // InternalHenshin_text.g:68:9: 'IN'
             {
-            match("EBigDecimal"); 
+            match("IN"); 
 
 
             }
@@ -1332,10 +1336,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:69:7: ( 'EBigInteger' )
-            // InternalHenshin_text.g:69:9: 'EBigInteger'
+            // InternalHenshin_text.g:69:7: ( 'OUT' )
+            // InternalHenshin_text.g:69:9: 'OUT'
             {
-            match("EBigInteger"); 
+            match("OUT"); 
 
 
             }
@@ -1353,10 +1357,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:70:7: ( 'EBoolean' )
-            // InternalHenshin_text.g:70:9: 'EBoolean'
+            // InternalHenshin_text.g:70:7: ( 'INOUT' )
+            // InternalHenshin_text.g:70:9: 'INOUT'
             {
-            match("EBoolean"); 
+            match("INOUT"); 
 
 
             }
@@ -1374,10 +1378,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:71:7: ( 'EBooleanObject' )
-            // InternalHenshin_text.g:71:9: 'EBooleanObject'
+            // InternalHenshin_text.g:71:7: ( 'VAR' )
+            // InternalHenshin_text.g:71:9: 'VAR'
             {
-            match("EBooleanObject"); 
+            match("VAR"); 
 
 
             }
@@ -1395,10 +1399,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:72:7: ( 'EByte' )
-            // InternalHenshin_text.g:72:9: 'EByte'
+            // InternalHenshin_text.g:72:7: ( 'EBigDecimal' )
+            // InternalHenshin_text.g:72:9: 'EBigDecimal'
             {
-            match("EByte"); 
+            match("EBigDecimal"); 
 
 
             }
@@ -1416,10 +1420,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:73:7: ( 'EByteArray' )
-            // InternalHenshin_text.g:73:9: 'EByteArray'
+            // InternalHenshin_text.g:73:7: ( 'EBigInteger' )
+            // InternalHenshin_text.g:73:9: 'EBigInteger'
             {
-            match("EByteArray"); 
+            match("EBigInteger"); 
 
 
             }
@@ -1437,10 +1441,10 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:74:7: ( 'EByteObject' )
-            // InternalHenshin_text.g:74:9: 'EByteObject'
+            // InternalHenshin_text.g:74:7: ( 'EBoolean' )
+            // InternalHenshin_text.g:74:9: 'EBoolean'
             {
-            match("EByteObject"); 
+            match("EBoolean"); 
 
 
             }
@@ -1458,10 +1462,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:75:7: ( 'EChar' )
-            // InternalHenshin_text.g:75:9: 'EChar'
+            // InternalHenshin_text.g:75:7: ( 'EBooleanObject' )
+            // InternalHenshin_text.g:75:9: 'EBooleanObject'
             {
-            match("EChar"); 
+            match("EBooleanObject"); 
 
 
             }
@@ -1479,10 +1483,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:76:7: ( 'ECharacterObject' )
-            // InternalHenshin_text.g:76:9: 'ECharacterObject'
+            // InternalHenshin_text.g:76:7: ( 'EByte' )
+            // InternalHenshin_text.g:76:9: 'EByte'
             {
-            match("ECharacterObject"); 
+            match("EByte"); 
 
 
             }
@@ -1500,10 +1504,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:77:7: ( 'EDate' )
-            // InternalHenshin_text.g:77:9: 'EDate'
+            // InternalHenshin_text.g:77:7: ( 'EByteArray' )
+            // InternalHenshin_text.g:77:9: 'EByteArray'
             {
-            match("EDate"); 
+            match("EByteArray"); 
 
 
             }
@@ -1521,10 +1525,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:78:7: ( 'EDiagnosticChain' )
-            // InternalHenshin_text.g:78:9: 'EDiagnosticChain'
+            // InternalHenshin_text.g:78:7: ( 'EByteObject' )
+            // InternalHenshin_text.g:78:9: 'EByteObject'
             {
-            match("EDiagnosticChain"); 
+            match("EByteObject"); 
 
 
             }
@@ -1542,10 +1546,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:79:7: ( 'EDouble' )
-            // InternalHenshin_text.g:79:9: 'EDouble'
+            // InternalHenshin_text.g:79:7: ( 'EChar' )
+            // InternalHenshin_text.g:79:9: 'EChar'
             {
-            match("EDouble"); 
+            match("EChar"); 
 
 
             }
@@ -1563,10 +1567,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:80:7: ( 'EDoubleObject' )
-            // InternalHenshin_text.g:80:9: 'EDoubleObject'
+            // InternalHenshin_text.g:80:7: ( 'ECharacterObject' )
+            // InternalHenshin_text.g:80:9: 'ECharacterObject'
             {
-            match("EDoubleObject"); 
+            match("ECharacterObject"); 
 
 
             }
@@ -1584,10 +1588,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:81:7: ( 'EEList' )
-            // InternalHenshin_text.g:81:9: 'EEList'
+            // InternalHenshin_text.g:81:7: ( 'EDate' )
+            // InternalHenshin_text.g:81:9: 'EDate'
             {
-            match("EEList"); 
+            match("EDate"); 
 
 
             }
@@ -1605,10 +1609,10 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:82:7: ( 'EEnumerator' )
-            // InternalHenshin_text.g:82:9: 'EEnumerator'
+            // InternalHenshin_text.g:82:7: ( 'EDiagnosticChain' )
+            // InternalHenshin_text.g:82:9: 'EDiagnosticChain'
             {
-            match("EEnumerator"); 
+            match("EDiagnosticChain"); 
 
 
             }
@@ -1626,10 +1630,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:83:7: ( 'EFeatureMap' )
-            // InternalHenshin_text.g:83:9: 'EFeatureMap'
+            // InternalHenshin_text.g:83:7: ( 'EDouble' )
+            // InternalHenshin_text.g:83:9: 'EDouble'
             {
-            match("EFeatureMap"); 
+            match("EDouble"); 
 
 
             }
@@ -1647,10 +1651,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:84:7: ( 'EFeatureMapEntry' )
-            // InternalHenshin_text.g:84:9: 'EFeatureMapEntry'
+            // InternalHenshin_text.g:84:7: ( 'EDoubleObject' )
+            // InternalHenshin_text.g:84:9: 'EDoubleObject'
             {
-            match("EFeatureMapEntry"); 
+            match("EDoubleObject"); 
 
 
             }
@@ -1668,10 +1672,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:85:7: ( 'EFloat' )
-            // InternalHenshin_text.g:85:9: 'EFloat'
+            // InternalHenshin_text.g:85:7: ( 'EEList' )
+            // InternalHenshin_text.g:85:9: 'EEList'
             {
-            match("EFloat"); 
+            match("EEList"); 
 
 
             }
@@ -1689,10 +1693,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:86:7: ( 'EFloatObject' )
-            // InternalHenshin_text.g:86:9: 'EFloatObject'
+            // InternalHenshin_text.g:86:7: ( 'EEnumerator' )
+            // InternalHenshin_text.g:86:9: 'EEnumerator'
             {
-            match("EFloatObject"); 
+            match("EEnumerator"); 
 
 
             }
@@ -1710,10 +1714,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:87:7: ( 'EInt' )
-            // InternalHenshin_text.g:87:9: 'EInt'
+            // InternalHenshin_text.g:87:7: ( 'EFeatureMap' )
+            // InternalHenshin_text.g:87:9: 'EFeatureMap'
             {
-            match("EInt"); 
+            match("EFeatureMap"); 
 
 
             }
@@ -1731,10 +1735,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:88:7: ( 'EIntegerObject' )
-            // InternalHenshin_text.g:88:9: 'EIntegerObject'
+            // InternalHenshin_text.g:88:7: ( 'EFeatureMapEntry' )
+            // InternalHenshin_text.g:88:9: 'EFeatureMapEntry'
             {
-            match("EIntegerObject"); 
+            match("EFeatureMapEntry"); 
 
 
             }
@@ -1752,10 +1756,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:89:7: ( 'ETreeIterator' )
-            // InternalHenshin_text.g:89:9: 'ETreeIterator'
+            // InternalHenshin_text.g:89:7: ( 'EFloat' )
+            // InternalHenshin_text.g:89:9: 'EFloat'
             {
-            match("ETreeIterator"); 
+            match("EFloat"); 
 
 
             }
@@ -1773,10 +1777,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:90:7: ( 'EInvocationTargetException' )
-            // InternalHenshin_text.g:90:9: 'EInvocationTargetException'
+            // InternalHenshin_text.g:90:7: ( 'EFloatObject' )
+            // InternalHenshin_text.g:90:9: 'EFloatObject'
             {
-            match("EInvocationTargetException"); 
+            match("EFloatObject"); 
 
 
             }
@@ -1794,10 +1798,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:91:7: ( 'EJavaClass' )
-            // InternalHenshin_text.g:91:9: 'EJavaClass'
+            // InternalHenshin_text.g:91:7: ( 'EInt' )
+            // InternalHenshin_text.g:91:9: 'EInt'
             {
-            match("EJavaClass"); 
+            match("EInt"); 
 
 
             }
@@ -1815,10 +1819,10 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:92:7: ( 'EJavaObject' )
-            // InternalHenshin_text.g:92:9: 'EJavaObject'
+            // InternalHenshin_text.g:92:7: ( 'EIntegerObject' )
+            // InternalHenshin_text.g:92:9: 'EIntegerObject'
             {
-            match("EJavaObject"); 
+            match("EIntegerObject"); 
 
 
             }
@@ -1836,10 +1840,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:93:7: ( 'ELong' )
-            // InternalHenshin_text.g:93:9: 'ELong'
+            // InternalHenshin_text.g:93:7: ( 'ETreeIterator' )
+            // InternalHenshin_text.g:93:9: 'ETreeIterator'
             {
-            match("ELong"); 
+            match("ETreeIterator"); 
 
 
             }
@@ -1857,10 +1861,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:94:7: ( 'ELongObject' )
-            // InternalHenshin_text.g:94:9: 'ELongObject'
+            // InternalHenshin_text.g:94:7: ( 'EInvocationTargetException' )
+            // InternalHenshin_text.g:94:9: 'EInvocationTargetException'
             {
-            match("ELongObject"); 
+            match("EInvocationTargetException"); 
 
 
             }
@@ -1878,10 +1882,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:95:7: ( 'EMap' )
-            // InternalHenshin_text.g:95:9: 'EMap'
+            // InternalHenshin_text.g:95:7: ( 'EJavaClass' )
+            // InternalHenshin_text.g:95:9: 'EJavaClass'
             {
-            match("EMap"); 
+            match("EJavaClass"); 
 
 
             }
@@ -1899,10 +1903,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:96:7: ( 'EResource' )
-            // InternalHenshin_text.g:96:9: 'EResource'
+            // InternalHenshin_text.g:96:7: ( 'EJavaObject' )
+            // InternalHenshin_text.g:96:9: 'EJavaObject'
             {
-            match("EResource"); 
+            match("EJavaObject"); 
 
 
             }
@@ -1920,10 +1924,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:97:7: ( 'EResourceSet' )
-            // InternalHenshin_text.g:97:9: 'EResourceSet'
+            // InternalHenshin_text.g:97:7: ( 'ELong' )
+            // InternalHenshin_text.g:97:9: 'ELong'
             {
-            match("EResourceSet"); 
+            match("ELong"); 
 
 
             }
@@ -1941,10 +1945,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:98:8: ( 'EShort' )
-            // InternalHenshin_text.g:98:10: 'EShort'
+            // InternalHenshin_text.g:98:8: ( 'ELongObject' )
+            // InternalHenshin_text.g:98:10: 'ELongObject'
             {
-            match("EShort"); 
+            match("ELongObject"); 
 
 
             }
@@ -1962,10 +1966,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:99:8: ( 'EShortObject' )
-            // InternalHenshin_text.g:99:10: 'EShortObject'
+            // InternalHenshin_text.g:99:8: ( 'EMap' )
+            // InternalHenshin_text.g:99:10: 'EMap'
             {
-            match("EShortObject"); 
+            match("EMap"); 
 
 
             }
@@ -1983,10 +1987,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:100:8: ( 'EString' )
-            // InternalHenshin_text.g:100:10: 'EString'
+            // InternalHenshin_text.g:100:8: ( 'EResource' )
+            // InternalHenshin_text.g:100:10: 'EResource'
             {
-            match("EString"); 
+            match("EResource"); 
 
 
             }
@@ -1999,15 +2003,99 @@
     }
     // $ANTLR end "T__102"
 
+    // $ANTLR start "T__103"
+    public final void mT__103() throws RecognitionException {
+        try {
+            int _type = T__103;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalHenshin_text.g:101:8: ( 'EResourceSet' )
+            // InternalHenshin_text.g:101:10: 'EResourceSet'
+            {
+            match("EResourceSet"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
+        try {
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalHenshin_text.g:102:8: ( 'EShort' )
+            // InternalHenshin_text.g:102:10: 'EShort'
+            {
+            match("EShort"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__104"
+
+    // $ANTLR start "T__105"
+    public final void mT__105() throws RecognitionException {
+        try {
+            int _type = T__105;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalHenshin_text.g:103:8: ( 'EShortObject' )
+            // InternalHenshin_text.g:103:10: 'EShortObject'
+            {
+            match("EShortObject"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__105"
+
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
+        try {
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalHenshin_text.g:104:8: ( 'EString' )
+            // InternalHenshin_text.g:104:10: 'EString'
+            {
+            match("EString"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
     // $ANTLR start "RULE_DECIMAL"
     public final void mRULE_DECIMAL() throws RecognitionException {
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:4326:14: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // InternalHenshin_text.g:4326:16: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // InternalHenshin_text.g:4388:14: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // InternalHenshin_text.g:4388:16: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // InternalHenshin_text.g:4326:16: ( '-' )?
+            // InternalHenshin_text.g:4388:16: ( '-' )?
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2016,7 +2104,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalHenshin_text.g:4326:16: '-'
+                    // InternalHenshin_text.g:4388:16: '-'
                     {
                     match('-'); 
 
@@ -2025,7 +2113,7 @@
 
             }
 
-            // InternalHenshin_text.g:4326:21: ( '0' .. '9' )+
+            // InternalHenshin_text.g:4388:21: ( '0' .. '9' )+
             int cnt2=0;
             loop2:
             do {
@@ -2039,7 +2127,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // InternalHenshin_text.g:4326:22: '0' .. '9'
+            	    // InternalHenshin_text.g:4388:22: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2056,7 +2144,7 @@
             } while (true);
 
             match('.'); 
-            // InternalHenshin_text.g:4326:37: ( '0' .. '9' )+
+            // InternalHenshin_text.g:4388:37: ( '0' .. '9' )+
             int cnt3=0;
             loop3:
             do {
@@ -2070,7 +2158,7 @@
 
                 switch (alt3) {
             	case 1 :
-            	    // InternalHenshin_text.g:4326:38: '0' .. '9'
+            	    // InternalHenshin_text.g:4388:38: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2102,11 +2190,11 @@
         try {
             int _type = RULE_NEGATIVE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:4328:15: ( '-' ( '0' .. '9' )+ )
-            // InternalHenshin_text.g:4328:17: '-' ( '0' .. '9' )+
+            // InternalHenshin_text.g:4390:15: ( '-' ( '0' .. '9' )+ )
+            // InternalHenshin_text.g:4390:17: '-' ( '0' .. '9' )+
             {
             match('-'); 
-            // InternalHenshin_text.g:4328:21: ( '0' .. '9' )+
+            // InternalHenshin_text.g:4390:21: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -2120,7 +2208,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // InternalHenshin_text.g:4328:22: '0' .. '9'
+            	    // InternalHenshin_text.g:4390:22: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2152,10 +2240,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:4330:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
-            // InternalHenshin_text.g:4330:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            // InternalHenshin_text.g:4392:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // InternalHenshin_text.g:4392:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
             {
-            // InternalHenshin_text.g:4330:11: ( '^' )?
+            // InternalHenshin_text.g:4392:11: ( '^' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -2164,7 +2252,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // InternalHenshin_text.g:4330:11: '^'
+                    // InternalHenshin_text.g:4392:11: '^'
                     {
                     match('^'); 
 
@@ -2182,7 +2270,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalHenshin_text.g:4330:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            // InternalHenshin_text.g:4392:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
             loop6:
             do {
                 int alt6=2;
@@ -2231,10 +2319,10 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:4332:10: ( ( '0' .. '9' )+ )
-            // InternalHenshin_text.g:4332:12: ( '0' .. '9' )+
+            // InternalHenshin_text.g:4394:10: ( ( '0' .. '9' )+ )
+            // InternalHenshin_text.g:4394:12: ( '0' .. '9' )+
             {
-            // InternalHenshin_text.g:4332:12: ( '0' .. '9' )+
+            // InternalHenshin_text.g:4394:12: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -2248,7 +2336,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // InternalHenshin_text.g:4332:13: '0' .. '9'
+            	    // InternalHenshin_text.g:4394:13: '0' .. '9'
             	    {
             	    matchRange('0','9'); 
 
@@ -2280,10 +2368,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:4334:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
-            // InternalHenshin_text.g:4334:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            // InternalHenshin_text.g:4396:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // InternalHenshin_text.g:4396:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
             {
-            // InternalHenshin_text.g:4334:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            // InternalHenshin_text.g:4396:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -2301,10 +2389,10 @@
             }
             switch (alt10) {
                 case 1 :
-                    // InternalHenshin_text.g:4334:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    // InternalHenshin_text.g:4396:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
                     {
                     match('\"'); 
-                    // InternalHenshin_text.g:4334:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalHenshin_text.g:4396:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -2320,7 +2408,7 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // InternalHenshin_text.g:4334:21: '\\\\' .
+                    	    // InternalHenshin_text.g:4396:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2328,7 +2416,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalHenshin_text.g:4334:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalHenshin_text.g:4396:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2353,10 +2441,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:4334:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    // InternalHenshin_text.g:4396:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
                     {
                     match('\''); 
-                    // InternalHenshin_text.g:4334:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalHenshin_text.g:4396:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -2372,7 +2460,7 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // InternalHenshin_text.g:4334:54: '\\\\' .
+                    	    // InternalHenshin_text.g:4396:54: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2380,7 +2468,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalHenshin_text.g:4334:61: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalHenshin_text.g:4396:61: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2423,12 +2511,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:4336:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalHenshin_text.g:4336:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalHenshin_text.g:4398:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalHenshin_text.g:4398:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalHenshin_text.g:4336:24: ( options {greedy=false; } : . )*
+            // InternalHenshin_text.g:4398:24: ( options {greedy=false; } : . )*
             loop11:
             do {
                 int alt11=2;
@@ -2453,7 +2541,7 @@
 
                 switch (alt11) {
             	case 1 :
-            	    // InternalHenshin_text.g:4336:52: .
+            	    // InternalHenshin_text.g:4398:52: .
             	    {
             	    matchAny(); 
 
@@ -2483,12 +2571,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:4338:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalHenshin_text.g:4338:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalHenshin_text.g:4400:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalHenshin_text.g:4400:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalHenshin_text.g:4338:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalHenshin_text.g:4400:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop12:
             do {
                 int alt12=2;
@@ -2501,7 +2589,7 @@
 
                 switch (alt12) {
             	case 1 :
-            	    // InternalHenshin_text.g:4338:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalHenshin_text.g:4400:24: ~ ( ( '\\n' | '\\r' ) )
             	    {
             	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
             	        input.consume();
@@ -2521,7 +2609,7 @@
                 }
             } while (true);
 
-            // InternalHenshin_text.g:4338:40: ( ( '\\r' )? '\\n' )?
+            // InternalHenshin_text.g:4400:40: ( ( '\\r' )? '\\n' )?
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2530,9 +2618,9 @@
             }
             switch (alt14) {
                 case 1 :
-                    // InternalHenshin_text.g:4338:41: ( '\\r' )? '\\n'
+                    // InternalHenshin_text.g:4400:41: ( '\\r' )? '\\n'
                     {
-                    // InternalHenshin_text.g:4338:41: ( '\\r' )?
+                    // InternalHenshin_text.g:4400:41: ( '\\r' )?
                     int alt13=2;
                     int LA13_0 = input.LA(1);
 
@@ -2541,7 +2629,7 @@
                     }
                     switch (alt13) {
                         case 1 :
-                            // InternalHenshin_text.g:4338:41: '\\r'
+                            // InternalHenshin_text.g:4400:41: '\\r'
                             {
                             match('\r'); 
 
@@ -2573,10 +2661,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:4340:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalHenshin_text.g:4340:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalHenshin_text.g:4402:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalHenshin_text.g:4402:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalHenshin_text.g:4340:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalHenshin_text.g:4402:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt15=0;
             loop15:
             do {
@@ -2630,8 +2718,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalHenshin_text.g:4342:16: ( . )
-            // InternalHenshin_text.g:4342:18: .
+            // InternalHenshin_text.g:4404:16: ( . )
+            // InternalHenshin_text.g:4404:18: .
             {
             matchAny(); 
 
@@ -2646,8 +2734,8 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // InternalHenshin_text.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | RULE_DECIMAL | RULE_NEGATIVE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt16=99;
+        // InternalHenshin_text.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | RULE_DECIMAL | RULE_NEGATIVE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt16=103;
         alt16 = dfa16.predict(input);
         switch (alt16) {
             case 1 :
@@ -3281,63 +3369,91 @@
                 }
                 break;
             case 91 :
-                // InternalHenshin_text.g:1:553: RULE_DECIMAL
+                // InternalHenshin_text.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // InternalHenshin_text.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // InternalHenshin_text.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // InternalHenshin_text.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // InternalHenshin_text.g:1:581: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 92 :
-                // InternalHenshin_text.g:1:566: RULE_NEGATIVE
+            case 96 :
+                // InternalHenshin_text.g:1:594: RULE_NEGATIVE
                 {
                 mRULE_NEGATIVE(); 
 
                 }
                 break;
-            case 93 :
-                // InternalHenshin_text.g:1:580: RULE_ID
+            case 97 :
+                // InternalHenshin_text.g:1:608: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 94 :
-                // InternalHenshin_text.g:1:588: RULE_INT
+            case 98 :
+                // InternalHenshin_text.g:1:616: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 95 :
-                // InternalHenshin_text.g:1:597: RULE_STRING
+            case 99 :
+                // InternalHenshin_text.g:1:625: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 96 :
-                // InternalHenshin_text.g:1:609: RULE_ML_COMMENT
+            case 100 :
+                // InternalHenshin_text.g:1:637: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 97 :
-                // InternalHenshin_text.g:1:625: RULE_SL_COMMENT
+            case 101 :
+                // InternalHenshin_text.g:1:653: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 98 :
-                // InternalHenshin_text.g:1:641: RULE_WS
+            case 102 :
+                // InternalHenshin_text.g:1:669: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 99 :
-                // InternalHenshin_text.g:1:649: RULE_ANY_OTHER
+            case 103 :
+                // InternalHenshin_text.g:1:677: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -3351,179 +3467,177 @@
 
     protected DFA16 dfa16 = new DFA16(this);
     static final String DFA16_eotS =
-        "\1\uffff\1\57\1\uffff\1\57\5\uffff\4\57\2\uffff\4\57\1\110\1\uffff\1\57\1\115\5\57\1\126\2\57\1\133\1\135\2\uffff\1\142\1\57\1\157\1\53\1\uffff\2\53\2\uffff\3\57\2\uffff\3\57\5\uffff\6\57\1\u0082\2\uffff\5\57\2\uffff\1\u0089\1\uffff\1\57\2\uffff\4\57\1\u008f\2\57\2\uffff\3\57\11\uffff\14\57\1\uffff\1\157\3\uffff\16\57\1\uffff\4\57\1\u00bc\1\57\1\uffff\1\57\1\u00bf\3\57\1\uffff\1\u00c3\1\u00c4\30\57\1\u00de\1\u00df\3\57\1\u00e3\14\57\1\uffff\1\57\1\u00f1\1\uffff\3\57\2\uffff\1\u00f5\1\u00f6\14\57\1\u0105\4\57\1\u010a\4\57\1\u010f\2\uffff\1\57\1\u0111\1\57\1\uffff\6\57\1\u0119\5\57\1\u011f\1\uffff\3\57\2\uffff\1\u0123\3\57\1\u0129\1\u012b\1\u012c\7\57\1\uffff\3\57\1\u0139\1\uffff\4\57\1\uffff\1\57\1\uffff\4\57\1\u0143\2\57\1\uffff\2\57\1\u0148\1\u0149\1\57\1\uffff\1\u014b\2\57\1\uffff\5\57\1\uffff\1\57\2\uffff\2\57\1\u0156\2\57\1\u015a\6\57\1\uffff\1\57\1\u0163\2\57\1\u0166\4\57\1\uffff\4\57\2\uffff\1\u016f\1\uffff\11\57\1\u017a\1\uffff\3\57\1\uffff\10\57\1\uffff\1\u0186\1\57\1\uffff\1\u0188\5\57\1\u018e\1\u018f\1\uffff\4\57\1\u0195\5\57\1\uffff\13\57\1\uffff\1\57\1\uffff\5\57\2\uffff\1\u01ad\4\57\1\uffff\16\57\1\u01c1\2\57\1\u01c4\1\57\1\u01c6\3\57\1\uffff\4\57\1\u01ce\12\57\1\u01d9\3\57\1\uffff\2\57\1\uffff\1\57\1\uffff\2\57\1\u01e2\1\57\1\u01e4\1\u01e5\1\57\1\uffff\1\u01e7\3\57\1\u01eb\1\u01ed\4\57\1\uffff\1\u01f2\1\u01f3\6\57\1\uffff\1\57\2\uffff\1\57\1\uffff\3\57\1\uffff\1\57\1\uffff\1\u0200\3\57\2\uffff\1\u0204\1\u0205\1\57\1\u0207\6\57\1\u020e\1\57\1\uffff\2\57\1\u0212\2\uffff\1\u0213\1\uffff\1\u0214\2\57\1\u0217\2\57\1\uffff\1\57\1\u021b\1\57\3\uffff\1\57\1\u021e\1\uffff\3\57\1\uffff\2\57\1\uffff\1\u0224\1\u0225\1\u0226\1\57\1\u0228\3\uffff\1\57\1\uffff\10\57\1\u0232\1\uffff";
+        "\1\uffff\1\61\1\uffff\1\61\5\uffff\4\61\2\uffff\4\61\1\113\1\uffff\1\61\1\117\5\61\1\131\2\61\1\136\1\140\2\uffff\1\145\3\61\1\164\1\55\1\uffff\2\55\2\uffff\3\61\2\uffff\3\61\5\uffff\6\61\1\u0087\2\uffff\5\61\1\uffff\1\u008e\2\uffff\1\61\2\uffff\4\61\1\u0094\3\61\2\uffff\3\61\11\uffff\1\u009c\15\61\1\uffff\1\164\3\uffff\16\61\1\uffff\4\61\1\u00c5\1\61\1\uffff\1\61\1\u00c8\3\61\1\uffff\1\u00cc\1\u00cd\1\u00ce\4\61\1\uffff\1\u00d3\25\61\1\u00ea\1\u00eb\3\61\1\u00ef\14\61\1\uffff\1\61\1\u00fd\1\uffff\3\61\3\uffff\1\u0101\1\u0102\2\61\1\uffff\13\61\1\u0112\4\61\1\u0117\4\61\1\u011c\2\uffff\1\61\1\u011e\1\61\1\uffff\6\61\1\u0126\5\61\1\u012c\1\uffff\3\61\2\uffff\1\u0130\1\u0131\3\61\1\u0137\1\u0139\1\u013a\7\61\1\uffff\3\61\1\u0147\1\uffff\4\61\1\uffff\1\61\1\uffff\4\61\1\u0151\2\61\1\uffff\2\61\1\u0156\1\u0157\1\61\1\uffff\1\u0159\2\61\2\uffff\5\61\1\uffff\1\61\2\uffff\2\61\1\u0164\2\61\1\u0168\6\61\1\uffff\1\61\1\u0171\2\61\1\u0174\4\61\1\uffff\4\61\2\uffff\1\u017d\1\uffff\11\61\1\u0188\1\uffff\3\61\1\uffff\10\61\1\uffff\1\u0194\1\61\1\uffff\1\u0196\5\61\1\u019c\1\u019d\1\uffff\4\61\1\u01a3\5\61\1\uffff\13\61\1\uffff\1\61\1\uffff\5\61\2\uffff\1\u01bb\4\61\1\uffff\16\61\1\u01cf\2\61\1\u01d2\1\61\1\u01d4\3\61\1\uffff\4\61\1\u01dc\12\61\1\u01e7\3\61\1\uffff\2\61\1\uffff\1\61\1\uffff\2\61\1\u01f0\1\61\1\u01f2\1\u01f3\1\61\1\uffff\1\u01f5\3\61\1\u01f9\1\u01fb\4\61\1\uffff\1\u0200\1\u0201\6\61\1\uffff\1\61\2\uffff\1\61\1\uffff\3\61\1\uffff\1\61\1\uffff\1\u020e\3\61\2\uffff\1\u0212\1\u0213\1\61\1\u0215\6\61\1\u021c\1\61\1\uffff\2\61\1\u0220\2\uffff\1\u0221\1\uffff\1\u0222\2\61\1\u0225\2\61\1\uffff\1\61\1\u0229\1\61\3\uffff\1\61\1\u022c\1\uffff\3\61\1\uffff\2\61\1\uffff\1\u0232\1\u0233\1\u0234\1\61\1\u0236\3\uffff\1\61\1\uffff\10\61\1\u0240\1\uffff";
     static final String DFA16_eofS =
-        "\u0233\uffff";
+        "\u0241\uffff";
     static final String DFA16_minS =
-        "\1\0\1\120\1\uffff\1\145\5\uffff\1\156\1\141\1\150\1\146\2\uffff\2\162\1\145\1\141\1\60\1\uffff\1\157\1\75\1\145\1\141\1\122\1\117\1\116\1\75\2\150\2\75\2\uffff\1\52\1\102\1\56\1\101\1\uffff\2\0\2\uffff\1\141\1\147\1\163\2\uffff\1\154\1\161\1\154\5\uffff\1\151\1\166\1\145\1\156\1\145\1\144\1\60\2\uffff\1\141\1\145\1\154\1\162\1\154\2\uffff\1\56\1\uffff\1\144\2\uffff\1\164\1\162\1\154\1\164\1\60\1\122\1\104\2\uffff\1\145\1\165\1\151\11\uffff\1\151\1\150\1\141\1\114\1\145\1\156\1\162\1\141\1\157\1\141\1\145\1\150\1\uffff\1\56\3\uffff\1\143\3\145\1\165\1\163\1\154\1\164\1\141\1\143\1\144\1\141\2\145\1\uffff\1\160\1\163\1\157\1\145\1\60\1\163\1\uffff\1\145\1\60\1\151\1\164\1\143\1\uffff\2\60\1\156\1\145\1\154\1\147\1\157\1\164\1\141\1\164\1\141\1\165\1\151\1\165\1\141\1\157\1\164\1\145\1\166\1\156\1\160\1\163\1\157\1\162\1\153\1\163\2\60\1\151\1\145\1\142\1\60\1\111\1\153\1\151\1\164\1\143\1\160\1\150\1\145\1\162\1\164\1\151\1\165\1\uffff\1\145\1\60\1\uffff\1\143\1\151\1\150\2\uffff\2\60\1\145\1\104\1\154\1\145\1\162\1\145\1\147\1\142\1\163\1\155\1\164\1\141\1\60\1\157\1\145\1\141\1\147\1\60\1\157\1\162\1\151\1\141\1\60\2\uffff\1\162\1\60\1\141\1\uffff\1\155\1\104\1\164\1\145\1\164\1\145\1\60\1\162\1\151\1\145\1\144\1\154\1\60\1\uffff\1\164\1\122\1\151\2\uffff\1\60\1\145\1\156\1\145\3\60\1\156\1\154\1\164\1\145\1\165\1\164\1\147\1\uffff\1\143\1\111\1\103\1\60\1\uffff\1\165\1\164\1\156\1\147\1\uffff\1\145\1\uffff\1\143\1\160\1\141\1\151\1\60\1\151\1\156\1\uffff\1\166\1\164\2\60\1\141\1\uffff\1\60\1\165\1\156\1\uffff\1\143\1\164\1\141\1\162\1\142\1\uffff\1\143\2\uffff\1\157\1\145\1\60\2\162\1\60\1\145\1\141\1\164\1\154\2\142\1\uffff\1\162\1\60\1\147\1\145\1\60\1\153\1\157\1\156\1\157\1\uffff\1\166\1\144\1\145\1\171\2\uffff\1\60\1\uffff\1\154\1\147\1\151\1\145\1\156\1\162\1\152\1\164\1\163\1\60\1\uffff\1\141\1\145\1\142\1\uffff\1\162\1\164\1\145\1\141\2\152\1\143\1\142\1\uffff\1\60\1\111\1\uffff\1\60\1\162\1\147\1\156\2\145\2\60\1\uffff\1\145\1\106\1\155\1\147\1\60\1\141\2\145\1\164\1\142\1\uffff\1\164\1\115\1\152\1\117\1\151\1\162\1\163\3\145\1\152\1\uffff\1\155\1\uffff\1\164\1\154\1\107\1\115\1\156\2\uffff\1\60\1\157\1\141\1\145\1\142\1\uffff\1\171\1\143\1\162\1\151\1\152\1\157\1\141\1\145\1\142\1\157\1\141\1\163\2\143\1\60\1\145\1\160\1\60\1\151\1\60\1\162\1\141\1\164\1\uffff\1\162\1\154\1\162\1\152\1\60\1\164\1\117\1\143\1\145\1\162\1\160\1\143\1\152\1\156\1\164\1\60\2\164\1\145\1\uffff\1\143\1\157\1\uffff\1\156\1\uffff\1\141\1\164\1\60\1\155\2\60\1\145\1\uffff\1\60\1\142\1\103\1\143\2\60\1\164\1\145\1\124\1\157\1\uffff\2\60\2\164\1\162\1\147\1\160\1\143\1\uffff\1\165\2\uffff\1\143\1\uffff\1\152\1\150\1\164\1\uffff\1\156\1\uffff\1\60\1\143\1\141\1\162\2\uffff\2\60\1\164\1\60\2\150\1\154\1\164\1\145\1\141\1\60\1\164\1\uffff\1\164\1\162\1\60\2\uffff\1\60\1\uffff\1\60\1\151\1\141\1\60\1\143\1\151\1\uffff\1\162\1\60\1\147\3\uffff\1\156\1\60\1\uffff\1\164\1\156\1\171\1\uffff\1\145\1\147\1\uffff\3\60\1\164\1\60\3\uffff\1\105\1\uffff\1\170\1\143\1\145\1\160\1\164\1\151\1\157\1\156\1\60\1\uffff";
+        "\1\0\1\120\1\uffff\1\145\5\uffff\1\156\1\141\1\150\1\146\2\uffff\2\162\1\145\1\141\1\60\1\uffff\1\157\1\75\1\145\1\141\1\122\1\117\1\116\1\75\2\150\2\75\2\uffff\1\52\1\116\1\101\1\102\1\56\1\101\1\uffff\2\0\2\uffff\1\141\1\147\1\163\2\uffff\1\154\1\161\1\154\5\uffff\1\151\1\166\1\145\1\156\1\145\1\144\1\60\2\uffff\1\141\1\145\1\154\1\162\1\154\1\uffff\1\56\2\uffff\1\144\2\uffff\1\164\1\162\1\154\1\164\1\60\1\124\1\122\1\104\2\uffff\1\145\1\165\1\151\11\uffff\1\60\1\122\1\151\1\150\1\141\1\114\1\145\1\156\1\162\1\141\1\157\1\141\1\145\1\150\1\uffff\1\56\3\uffff\1\143\3\145\1\165\1\163\1\154\1\164\1\141\1\143\1\144\1\141\2\145\1\uffff\1\160\1\163\1\157\1\145\1\60\1\163\1\uffff\1\145\1\60\1\151\1\164\1\143\1\uffff\3\60\1\156\1\145\1\154\1\125\1\uffff\1\60\1\147\1\157\1\164\1\141\1\164\1\141\1\165\1\151\1\165\1\141\1\157\1\164\1\145\1\166\1\156\1\160\1\163\1\157\1\162\1\153\1\163\2\60\1\151\1\145\1\142\1\60\1\111\1\153\1\151\1\164\1\143\1\160\1\150\1\145\1\162\1\164\1\151\1\165\1\uffff\1\145\1\60\1\uffff\1\143\1\151\1\150\3\uffff\2\60\1\145\1\124\1\uffff\1\104\1\154\1\145\1\162\1\145\1\147\1\142\1\163\1\155\1\164\1\141\1\60\1\157\1\145\1\141\1\147\1\60\1\157\1\162\1\151\1\141\1\60\2\uffff\1\162\1\60\1\141\1\uffff\1\155\1\104\1\164\1\145\1\164\1\145\1\60\1\162\1\151\1\145\1\144\1\154\1\60\1\uffff\1\164\1\122\1\151\2\uffff\2\60\1\145\1\156\1\145\3\60\1\156\1\154\1\164\1\145\1\165\1\164\1\147\1\uffff\1\143\1\111\1\103\1\60\1\uffff\1\165\1\164\1\156\1\147\1\uffff\1\145\1\uffff\1\143\1\160\1\141\1\151\1\60\1\151\1\156\1\uffff\1\166\1\164\2\60\1\141\1\uffff\1\60\1\165\1\156\2\uffff\1\143\1\164\1\141\1\162\1\142\1\uffff\1\143\2\uffff\1\157\1\145\1\60\2\162\1\60\1\145\1\141\1\164\1\154\2\142\1\uffff\1\162\1\60\1\147\1\145\1\60\1\153\1\157\1\156\1\157\1\uffff\1\166\1\144\1\145\1\171\2\uffff\1\60\1\uffff\1\154\1\147\1\151\1\145\1\156\1\162\1\152\1\164\1\163\1\60\1\uffff\1\141\1\145\1\142\1\uffff\1\162\1\164\1\145\1\141\2\152\1\143\1\142\1\uffff\1\60\1\111\1\uffff\1\60\1\162\1\147\1\156\2\145\2\60\1\uffff\1\145\1\106\1\155\1\147\1\60\1\141\2\145\1\164\1\142\1\uffff\1\164\1\115\1\152\1\117\1\151\1\162\1\163\3\145\1\152\1\uffff\1\155\1\uffff\1\164\1\154\1\107\1\115\1\156\2\uffff\1\60\1\157\1\141\1\145\1\142\1\uffff\1\171\1\143\1\162\1\151\1\152\1\157\1\141\1\145\1\142\1\157\1\141\1\163\2\143\1\60\1\145\1\160\1\60\1\151\1\60\1\162\1\141\1\164\1\uffff\1\162\1\154\1\162\1\152\1\60\1\164\1\117\1\143\1\145\1\162\1\160\1\143\1\152\1\156\1\164\1\60\2\164\1\145\1\uffff\1\143\1\157\1\uffff\1\156\1\uffff\1\141\1\164\1\60\1\155\2\60\1\145\1\uffff\1\60\1\142\1\103\1\143\2\60\1\164\1\145\1\124\1\157\1\uffff\2\60\2\164\1\162\1\147\1\160\1\143\1\uffff\1\165\2\uffff\1\143\1\uffff\1\152\1\150\1\164\1\uffff\1\156\1\uffff\1\60\1\143\1\141\1\162\2\uffff\2\60\1\164\1\60\2\150\1\154\1\164\1\145\1\141\1\60\1\164\1\uffff\1\164\1\162\1\60\2\uffff\1\60\1\uffff\1\60\1\151\1\141\1\60\1\143\1\151\1\uffff\1\162\1\60\1\147\3\uffff\1\156\1\60\1\uffff\1\164\1\156\1\171\1\uffff\1\145\1\147\1\uffff\3\60\1\164\1\60\3\uffff\1\105\1\uffff\1\170\1\143\1\145\1\160\1\164\1\151\1\157\1\156\1\60\1\uffff";
     static final String DFA16_maxS =
-        "\1\uffff\1\154\1\uffff\1\165\5\uffff\1\156\1\141\1\162\1\156\2\uffff\2\162\1\145\1\157\1\76\1\uffff\1\157\1\75\1\164\1\165\1\122\1\117\1\116\1\75\1\162\1\150\2\75\2\uffff\1\57\1\124\1\71\1\172\1\uffff\2\uffff\2\uffff\1\141\1\147\1\163\2\uffff\1\154\1\165\1\154\5\uffff\1\151\1\166\1\145\1\156\1\145\1\152\1\172\2\uffff\1\141\1\151\1\154\1\162\1\154\2\uffff\1\71\1\uffff\1\144\2\uffff\1\164\1\162\1\154\1\164\1\172\1\122\1\104\2\uffff\1\145\1\165\1\151\11\uffff\1\171\1\150\1\157\1\156\1\154\1\156\1\162\1\141\1\157\1\141\1\145\1\164\1\uffff\1\71\3\uffff\1\143\3\145\1\165\1\163\1\154\1\164\1\141\1\143\1\144\1\141\2\145\1\uffff\1\160\1\163\1\157\1\145\1\172\1\163\1\uffff\1\145\1\172\1\151\1\164\1\143\1\uffff\2\172\1\156\1\145\1\154\1\147\1\157\1\164\1\141\1\164\1\141\1\165\1\151\1\165\1\141\1\157\1\166\1\145\1\166\1\156\1\160\1\163\1\157\1\162\1\153\1\163\2\172\1\151\1\145\1\142\1\172\1\111\1\153\1\151\1\164\1\143\1\160\1\150\1\145\1\162\1\164\1\151\1\165\1\uffff\1\145\1\172\1\uffff\1\143\1\151\1\150\2\uffff\2\172\1\145\1\111\1\154\1\145\1\162\1\145\1\147\1\142\1\163\1\155\1\164\1\141\1\172\1\157\1\145\1\141\1\147\1\172\1\157\1\162\1\151\1\141\1\172\2\uffff\1\162\1\172\1\141\1\uffff\1\155\1\104\1\164\1\145\1\164\1\145\1\172\1\162\1\151\1\145\1\144\1\154\1\172\1\uffff\1\164\1\122\1\151\2\uffff\1\172\1\145\1\156\1\145\3\172\1\156\1\154\1\164\1\145\1\165\1\164\1\147\1\uffff\1\143\1\111\1\117\1\172\1\uffff\1\165\1\164\1\156\1\147\1\uffff\1\145\1\uffff\1\143\1\160\1\141\1\151\1\172\1\151\1\156\1\uffff\1\166\1\164\2\172\1\141\1\uffff\1\172\1\165\1\156\1\uffff\1\143\1\164\1\141\1\162\1\142\1\uffff\1\143\2\uffff\1\157\1\145\1\172\2\162\1\172\1\145\1\141\1\164\1\154\2\142\1\uffff\1\162\1\172\1\147\1\145\1\172\1\153\1\157\1\156\1\157\1\uffff\1\166\1\144\1\145\1\171\2\uffff\1\172\1\uffff\1\154\1\147\1\151\1\145\1\156\1\162\1\152\1\164\1\163\1\172\1\uffff\1\141\1\145\1\142\1\uffff\1\162\1\164\1\145\1\141\2\152\1\143\1\142\1\uffff\1\172\1\111\1\uffff\1\172\1\162\1\147\1\156\2\145\2\172\1\uffff\1\145\1\106\1\155\1\147\1\172\1\141\2\145\1\164\1\142\1\uffff\1\164\1\115\1\152\1\117\1\151\1\162\1\163\3\145\1\152\1\uffff\1\155\1\uffff\1\164\1\154\1\163\1\115\1\156\2\uffff\1\172\1\157\1\141\1\145\1\142\1\uffff\1\171\1\143\1\162\1\151\1\152\1\157\1\141\1\145\1\142\1\157\1\141\1\163\2\143\1\172\1\145\1\160\1\172\1\151\1\172\1\162\1\141\1\164\1\uffff\1\162\1\154\1\162\1\152\1\172\1\164\1\117\1\143\1\145\1\162\1\160\1\143\1\152\1\156\1\164\1\172\2\164\1\145\1\uffff\1\143\1\157\1\uffff\1\156\1\uffff\1\141\1\164\1\172\1\155\2\172\1\145\1\uffff\1\172\1\142\1\103\1\143\2\172\1\164\1\145\1\124\1\157\1\uffff\2\172\2\164\1\162\1\147\1\160\1\143\1\uffff\1\165\2\uffff\1\143\1\uffff\1\152\1\150\1\164\1\uffff\1\156\1\uffff\1\172\1\143\1\141\1\162\2\uffff\2\172\1\164\1\172\2\150\1\154\1\164\1\145\1\141\1\172\1\164\1\uffff\1\164\1\162\1\172\2\uffff\1\172\1\uffff\1\172\1\151\1\141\1\172\1\143\1\151\1\uffff\1\162\1\172\1\147\3\uffff\1\156\1\172\1\uffff\1\164\1\156\1\171\1\uffff\1\145\1\147\1\uffff\3\172\1\164\1\172\3\uffff\1\105\1\uffff\1\170\1\143\1\145\1\160\1\164\1\151\1\157\1\156\1\172\1\uffff";
+        "\1\uffff\1\154\1\uffff\1\165\5\uffff\1\156\1\141\1\162\1\156\2\uffff\2\162\1\145\1\157\1\76\1\uffff\1\157\1\75\1\164\1\165\1\125\1\117\1\116\1\75\1\162\1\150\2\75\2\uffff\1\57\1\116\1\101\1\124\1\71\1\172\1\uffff\2\uffff\2\uffff\1\141\1\147\1\163\2\uffff\1\154\1\165\1\154\5\uffff\1\151\1\166\1\145\1\156\1\145\1\152\1\172\2\uffff\1\141\1\151\1\154\1\162\1\154\1\uffff\1\71\2\uffff\1\144\2\uffff\1\164\1\162\1\154\1\164\1\172\1\124\1\122\1\104\2\uffff\1\145\1\165\1\151\11\uffff\1\172\1\122\1\171\1\150\1\157\1\156\1\154\1\156\1\162\1\141\1\157\1\141\1\145\1\164\1\uffff\1\71\3\uffff\1\143\3\145\1\165\1\163\1\154\1\164\1\141\1\143\1\144\1\141\2\145\1\uffff\1\160\1\163\1\157\1\145\1\172\1\163\1\uffff\1\145\1\172\1\151\1\164\1\143\1\uffff\3\172\1\156\1\145\1\154\1\125\1\uffff\1\172\1\147\1\157\1\164\1\141\1\164\1\141\1\165\1\151\1\165\1\141\1\157\1\166\1\145\1\166\1\156\1\160\1\163\1\157\1\162\1\153\1\163\2\172\1\151\1\145\1\142\1\172\1\111\1\153\1\151\1\164\1\143\1\160\1\150\1\145\1\162\1\164\1\151\1\165\1\uffff\1\145\1\172\1\uffff\1\143\1\151\1\150\3\uffff\2\172\1\145\1\124\1\uffff\1\111\1\154\1\145\1\162\1\145\1\147\1\142\1\163\1\155\1\164\1\141\1\172\1\157\1\145\1\141\1\147\1\172\1\157\1\162\1\151\1\141\1\172\2\uffff\1\162\1\172\1\141\1\uffff\1\155\1\104\1\164\1\145\1\164\1\145\1\172\1\162\1\151\1\145\1\144\1\154\1\172\1\uffff\1\164\1\122\1\151\2\uffff\2\172\1\145\1\156\1\145\3\172\1\156\1\154\1\164\1\145\1\165\1\164\1\147\1\uffff\1\143\1\111\1\117\1\172\1\uffff\1\165\1\164\1\156\1\147\1\uffff\1\145\1\uffff\1\143\1\160\1\141\1\151\1\172\1\151\1\156\1\uffff\1\166\1\164\2\172\1\141\1\uffff\1\172\1\165\1\156\2\uffff\1\143\1\164\1\141\1\162\1\142\1\uffff\1\143\2\uffff\1\157\1\145\1\172\2\162\1\172\1\145\1\141\1\164\1\154\2\142\1\uffff\1\162\1\172\1\147\1\145\1\172\1\153\1\157\1\156\1\157\1\uffff\1\166\1\144\1\145\1\171\2\uffff\1\172\1\uffff\1\154\1\147\1\151\1\145\1\156\1\162\1\152\1\164\1\163\1\172\1\uffff\1\141\1\145\1\142\1\uffff\1\162\1\164\1\145\1\141\2\152\1\143\1\142\1\uffff\1\172\1\111\1\uffff\1\172\1\162\1\147\1\156\2\145\2\172\1\uffff\1\145\1\106\1\155\1\147\1\172\1\141\2\145\1\164\1\142\1\uffff\1\164\1\115\1\152\1\117\1\151\1\162\1\163\3\145\1\152\1\uffff\1\155\1\uffff\1\164\1\154\1\163\1\115\1\156\2\uffff\1\172\1\157\1\141\1\145\1\142\1\uffff\1\171\1\143\1\162\1\151\1\152\1\157\1\141\1\145\1\142\1\157\1\141\1\163\2\143\1\172\1\145\1\160\1\172\1\151\1\172\1\162\1\141\1\164\1\uffff\1\162\1\154\1\162\1\152\1\172\1\164\1\117\1\143\1\145\1\162\1\160\1\143\1\152\1\156\1\164\1\172\2\164\1\145\1\uffff\1\143\1\157\1\uffff\1\156\1\uffff\1\141\1\164\1\172\1\155\2\172\1\145\1\uffff\1\172\1\142\1\103\1\143\2\172\1\164\1\145\1\124\1\157\1\uffff\2\172\2\164\1\162\1\147\1\160\1\143\1\uffff\1\165\2\uffff\1\143\1\uffff\1\152\1\150\1\164\1\uffff\1\156\1\uffff\1\172\1\143\1\141\1\162\2\uffff\2\172\1\164\1\172\2\150\1\154\1\164\1\145\1\141\1\172\1\164\1\uffff\1\164\1\162\1\172\2\uffff\1\172\1\uffff\1\172\1\151\1\141\1\172\1\143\1\151\1\uffff\1\162\1\172\1\147\3\uffff\1\156\1\172\1\uffff\1\164\1\156\1\171\1\uffff\1\145\1\147\1\uffff\3\172\1\164\1\172\3\uffff\1\105\1\uffff\1\170\1\143\1\145\1\160\1\164\1\151\1\157\1\156\1\172\1\uffff";
     static final String DFA16_acceptS =
-        "\2\uffff\1\2\1\uffff\1\4\1\5\1\6\1\7\1\10\4\uffff\1\16\1\17\5\uffff\1\30\14\uffff\1\66\1\70\4\uffff\1\135\2\uffff\1\142\1\143\3\uffff\1\135\1\2\3\uffff\1\4\1\5\1\6\1\7\1\10\7\uffff\1\16\1\17\5\uffff\1\27\1\67\1\uffff\1\30\1\uffff\1\60\1\33\7\uffff\1\61\1\43\3\uffff\1\62\1\64\1\63\1\65\1\66\1\70\1\140\1\141\1\71\14\uffff\1\136\1\uffff\1\133\1\137\1\142\16\uffff\1\50\6\uffff\1\134\5\uffff\1\40\54\uffff\1\54\2\uffff\1\34\3\uffff\1\41\1\42\31\uffff\1\52\1\3\3\uffff\1\11\15\uffff\1\31\3\uffff\1\51\1\56\16\uffff\1\115\4\uffff\1\125\4\uffff\1\26\1\uffff\1\32\7\uffff\1\20\5\uffff\1\57\3\uffff\1\55\5\uffff\1\76\1\uffff\1\101\1\103\14\uffff\1\123\11\uffff\1\22\4\uffff\1\23\1\24\1\uffff\1\45\12\uffff\1\107\3\uffff\1\113\10\uffff\1\130\2\uffff\1\25\10\uffff\1\37\12\uffff\1\105\13\uffff\1\132\1\uffff\1\46\5\uffff\1\21\1\53\5\uffff\1\74\27\uffff\1\35\23\uffff\1\126\2\uffff\1\12\1\uffff\1\15\7\uffff\1\77\12\uffff\1\121\10\uffff\1\47\1\uffff\1\72\1\73\1\uffff\1\100\3\uffff\1\110\1\uffff\1\111\4\uffff\1\122\1\124\14\uffff\1\114\3\uffff\1\127\1\131\1\uffff\1\13\6\uffff\1\106\3\uffff\1\117\1\1\1\44\2\uffff\1\75\3\uffff\1\116\2\uffff\1\36\5\uffff\1\102\1\104\1\112\1\uffff\1\14\11\uffff\1\120";
+        "\2\uffff\1\2\1\uffff\1\4\1\5\1\6\1\7\1\10\4\uffff\1\16\1\17\5\uffff\1\30\14\uffff\1\66\1\70\6\uffff\1\141\2\uffff\1\146\1\147\3\uffff\1\141\1\2\3\uffff\1\4\1\5\1\6\1\7\1\10\7\uffff\1\16\1\17\5\uffff\1\27\1\uffff\1\67\1\30\1\uffff\1\60\1\33\10\uffff\1\61\1\43\3\uffff\1\62\1\64\1\63\1\65\1\66\1\70\1\144\1\145\1\71\16\uffff\1\142\1\uffff\1\137\1\143\1\146\16\uffff\1\50\6\uffff\1\140\5\uffff\1\40\7\uffff\1\72\50\uffff\1\54\2\uffff\1\34\3\uffff\1\73\1\41\1\42\4\uffff\1\75\26\uffff\1\52\1\3\3\uffff\1\11\15\uffff\1\31\3\uffff\1\51\1\56\17\uffff\1\121\4\uffff\1\131\4\uffff\1\26\1\uffff\1\32\7\uffff\1\20\5\uffff\1\57\3\uffff\1\55\1\74\5\uffff\1\102\1\uffff\1\105\1\107\14\uffff\1\127\11\uffff\1\22\4\uffff\1\23\1\24\1\uffff\1\45\12\uffff\1\113\3\uffff\1\117\10\uffff\1\134\2\uffff\1\25\10\uffff\1\37\12\uffff\1\111\13\uffff\1\136\1\uffff\1\46\5\uffff\1\21\1\53\5\uffff\1\100\27\uffff\1\35\23\uffff\1\132\2\uffff\1\12\1\uffff\1\15\7\uffff\1\103\12\uffff\1\125\10\uffff\1\47\1\uffff\1\76\1\77\1\uffff\1\104\3\uffff\1\114\1\uffff\1\115\4\uffff\1\126\1\130\14\uffff\1\120\3\uffff\1\133\1\135\1\uffff\1\13\6\uffff\1\112\3\uffff\1\123\1\1\1\44\2\uffff\1\101\3\uffff\1\122\2\uffff\1\36\5\uffff\1\106\1\110\1\116\1\uffff\1\14\11\uffff\1\124";
     static final String DFA16_specialS =
-        "\1\0\47\uffff\1\1\1\2\u0209\uffff}>";
+        "\1\0\51\uffff\1\1\1\2\u0215\uffff}>";
     static final String[] DFA16_transitionS = {
-            "\11\53\2\52\2\53\1\52\22\53\1\52\1\34\1\50\4\53\1\51\1\4\1\6\1\42\1\41\1\5\1\23\1\2\1\43\12\45\1\24\1\53\1\40\1\26\1\37\2\53\1\33\3\47\1\44\11\47\1\31\10\47\1\32\2\47\1\15\1\53\1\16\1\46\1\47\1\53\2\47\1\13\1\21\1\1\1\22\1\17\1\47\1\14\1\12\2\47\1\30\1\25\1\47\1\20\1\47\1\3\1\27\1\35\1\11\1\47\1\36\3\47\1\7\1\53\1\10\uff82\53",
-            "\1\54\23\uffff\1\55\7\uffff\1\56",
+            "\11\55\2\54\2\55\1\54\22\55\1\54\1\34\1\52\4\55\1\53\1\4\1\6\1\42\1\41\1\5\1\23\1\2\1\43\12\47\1\24\1\55\1\40\1\26\1\37\2\55\1\33\3\51\1\46\3\51\1\44\5\51\1\31\6\51\1\45\1\51\1\32\2\51\1\15\1\55\1\16\1\50\1\51\1\55\2\51\1\13\1\21\1\1\1\22\1\17\1\51\1\14\1\12\2\51\1\30\1\25\1\51\1\20\1\51\1\3\1\27\1\35\1\11\1\51\1\36\3\51\1\7\1\55\1\10\uff82\55",
+            "\1\56\23\uffff\1\57\7\uffff\1\60",
             "",
-            "\1\62\11\uffff\1\63\5\uffff\1\61",
+            "\1\64\11\uffff\1\65\5\uffff\1\63",
             "",
             "",
             "",
             "",
             "",
-            "\1\71",
-            "\1\72",
-            "\1\73\6\uffff\1\74\2\uffff\1\75",
-            "\1\77\7\uffff\1\76",
+            "\1\73",
+            "\1\74",
+            "\1\75\6\uffff\1\76\2\uffff\1\77",
+            "\1\101\7\uffff\1\100",
             "",
             "",
-            "\1\102",
-            "\1\103",
             "\1\104",
-            "\1\106\15\uffff\1\105",
-            "\12\111\4\uffff\1\107",
+            "\1\105",
+            "\1\106",
+            "\1\110\15\uffff\1\107",
+            "\12\112\4\uffff\1\111",
             "",
-            "\1\113",
-            "\1\114",
-            "\1\116\16\uffff\1\117",
-            "\1\121\23\uffff\1\120",
-            "\1\122",
-            "\1\123",
-            "\1\124",
-            "\1\125",
-            "\1\127\11\uffff\1\130",
-            "\1\131",
-            "\1\132",
+            "\1\115",
+            "\1\116",
+            "\1\120\16\uffff\1\121",
+            "\1\123\23\uffff\1\122",
+            "\1\124\2\uffff\1\125",
+            "\1\126",
+            "\1\127",
+            "\1\130",
+            "\1\132\11\uffff\1\133",
             "\1\134",
+            "\1\135",
+            "\1\137",
             "",
             "",
-            "\1\140\4\uffff\1\141",
-            "\1\143\1\144\1\145\1\146\1\147\2\uffff\1\150\1\152\1\uffff\1\153\1\154\4\uffff\1\155\1\156\1\151",
-            "\1\161\1\uffff\12\160",
-            "\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\143\4\uffff\1\144",
+            "\1\146",
+            "\1\147",
+            "\1\150\1\151\1\152\1\153\1\154\2\uffff\1\155\1\157\1\uffff\1\160\1\161\4\uffff\1\162\1\163\1\156",
+            "\1\166\1\uffff\12\165",
+            "\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
-            "\0\162",
-            "\0\162",
+            "\0\167",
+            "\0\167",
             "",
             "",
-            "\1\164",
-            "\1\165",
-            "\1\166",
-            "",
-            "",
-            "\1\167",
-            "\1\170\3\uffff\1\171",
+            "\1\171",
             "\1\172",
-            "",
-            "",
-            "",
-            "",
-            "",
             "\1\173",
+            "",
+            "",
             "\1\174",
-            "\1\175",
-            "\1\176",
+            "\1\175\3\uffff\1\176",
             "\1\177",
-            "\1\u0081\5\uffff\1\u0080",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "",
             "",
+            "",
+            "",
+            "",
+            "\1\u0080",
+            "\1\u0081",
+            "\1\u0082",
             "\1\u0083",
-            "\1\u0084\3\uffff\1\u0085",
-            "\1\u0086",
-            "\1\u0087",
+            "\1\u0084",
+            "\1\u0086\5\uffff\1\u0085",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "",
             "\1\u0088",
-            "",
-            "",
-            "\1\161\1\uffff\12\111",
-            "",
-            "\1\u008a",
-            "",
-            "",
+            "\1\u0089\3\uffff\1\u008a",
             "\1\u008b",
             "\1\u008c",
             "\1\u008d",
-            "\1\u008e",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "",
+            "\1\166\1\uffff\12\112",
+            "",
+            "",
+            "\1\u008f",
+            "",
+            "",
             "\1\u0090",
             "\1\u0091",
-            "",
-            "",
             "\1\u0092",
             "\1\u0093",
-            "\1\u0094",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u0095",
+            "\1\u0096",
+            "\1\u0097",
             "",
             "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u0095\5\uffff\1\u0096\11\uffff\1\u0097",
             "\1\u0098",
-            "\1\u0099\7\uffff\1\u009a\5\uffff\1\u009b",
-            "\1\u009c\41\uffff\1\u009d",
-            "\1\u009e\6\uffff\1\u009f",
-            "\1\u00a0",
+            "\1\u0099",
+            "\1\u009a",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\12\61\7\uffff\16\61\1\u009b\13\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u009d",
+            "\1\u009e\5\uffff\1\u009f\11\uffff\1\u00a0",
             "\1\u00a1",
-            "\1\u00a2",
-            "\1\u00a3",
-            "\1\u00a4",
-            "\1\u00a5",
-            "\1\u00a6\13\uffff\1\u00a7",
-            "",
-            "\1\161\1\uffff\12\160",
-            "",
-            "",
-            "",
-            "\1\u00a8",
+            "\1\u00a2\7\uffff\1\u00a3\5\uffff\1\u00a4",
+            "\1\u00a5\41\uffff\1\u00a6",
+            "\1\u00a7\6\uffff\1\u00a8",
             "\1\u00a9",
             "\1\u00aa",
             "\1\u00ab",
             "\1\u00ac",
             "\1\u00ad",
             "\1\u00ae",
-            "\1\u00af",
-            "\1\u00b0",
+            "\1\u00af\13\uffff\1\u00b0",
+            "",
+            "\1\166\1\uffff\12\165",
+            "",
+            "",
+            "",
             "\1\u00b1",
             "\1\u00b2",
             "\1\u00b3",
             "\1\u00b4",
             "\1\u00b5",
-            "",
             "\1\u00b6",
             "\1\u00b7",
             "\1\u00b8",
             "\1\u00b9",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\1\57\1\u00ba\12\57\1\u00bb\15\57",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
             "\1\u00bd",
-            "",
             "\1\u00be",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "",
+            "\1\u00bf",
             "\1\u00c0",
             "\1\u00c1",
             "\1\u00c2",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u00c5",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\1\61\1\u00c3\12\61\1\u00c4\15\61",
             "\1\u00c6",
+            "",
             "\1\u00c7",
-            "\1\u00c8",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u00c9",
             "\1\u00ca",
             "\1\u00cb",
-            "\1\u00cc",
-            "\1\u00cd",
-            "\1\u00ce",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u00cf",
             "\1\u00d0",
             "\1\u00d1",
             "\1\u00d2",
-            "\1\u00d3\1\uffff\1\u00d4",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u00d4",
             "\1\u00d5",
             "\1\u00d6",
             "\1\u00d7",
@@ -3533,144 +3647,144 @@
             "\1\u00db",
             "\1\u00dc",
             "\1\u00dd",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u00e0",
+            "\1\u00de",
+            "\1\u00df\1\uffff\1\u00e0",
             "\1\u00e1",
             "\1\u00e2",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u00e3",
             "\1\u00e4",
             "\1\u00e5",
             "\1\u00e6",
             "\1\u00e7",
             "\1\u00e8",
             "\1\u00e9",
-            "\1\u00ea",
-            "\1\u00eb",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u00ec",
             "\1\u00ed",
             "\1\u00ee",
-            "\1\u00ef",
-            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u00f0",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "",
+            "\1\u00f1",
             "\1\u00f2",
             "\1\u00f3",
             "\1\u00f4",
-            "",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u00f5",
+            "\1\u00f6",
             "\1\u00f7",
-            "\1\u00f8\4\uffff\1\u00f9",
+            "\1\u00f8",
+            "\1\u00f9",
             "\1\u00fa",
             "\1\u00fb",
+            "",
             "\1\u00fc",
-            "\1\u00fd",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
             "\1\u00fe",
             "\1\u00ff",
             "\1\u0100",
-            "\1\u0101",
-            "\1\u0102",
+            "",
+            "",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0103",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\4\57\1\u0104\25\57",
-            "\1\u0106",
+            "\1\u0104",
+            "",
+            "\1\u0105\4\uffff\1\u0106",
             "\1\u0107",
             "\1\u0108",
             "\1\u0109",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u010a",
             "\1\u010b",
             "\1\u010c",
             "\1\u010d",
             "\1\u010e",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "",
-            "",
+            "\1\u010f",
             "\1\u0110",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u0112",
-            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\4\61\1\u0111\25\61",
             "\1\u0113",
             "\1\u0114",
             "\1\u0115",
             "\1\u0116",
-            "\1\u0117",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0118",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0119",
             "\1\u011a",
             "\1\u011b",
-            "\1\u011c",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "",
             "\1\u011d",
-            "\1\u011e",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u011f",
             "",
             "\1\u0120",
             "\1\u0121",
             "\1\u0122",
-            "",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0123",
             "\1\u0124",
             "\1\u0125",
-            "\1\u0126",
-            "\12\57\7\uffff\1\u0127\15\57\1\u0128\13\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\1\u012a\31\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a",
+            "\1\u012b",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
             "\1\u012d",
             "\1\u012e",
             "\1\u012f",
-            "\1\u0130",
-            "\1\u0131",
+            "",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0132",
             "\1\u0133",
-            "",
             "\1\u0134",
-            "\1\u0135",
-            "\1\u0136\13\uffff\1\u0137",
-            "\12\57\7\uffff\16\57\1\u0138\13\57\4\uffff\1\57\1\uffff\32\57",
-            "",
-            "\1\u013a",
+            "\12\61\7\uffff\1\u0135\15\61\1\u0136\13\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\1\u0138\31\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u013b",
             "\1\u013c",
             "\1\u013d",
-            "",
             "\1\u013e",
-            "",
             "\1\u013f",
             "\1\u0140",
             "\1\u0141",
+            "",
             "\1\u0142",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u0144",
-            "\1\u0145",
+            "\1\u0143",
+            "\1\u0144\13\uffff\1\u0145",
+            "\12\61\7\uffff\16\61\1\u0146\13\61\4\uffff\1\61\1\uffff\32\61",
             "",
-            "\1\u0146",
-            "\1\u0147",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0148",
+            "\1\u0149",
             "\1\u014a",
+            "\1\u014b",
             "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u014c",
-            "\1\u014d",
             "",
+            "\1\u014d",
             "\1\u014e",
             "\1\u014f",
             "\1\u0150",
-            "\1\u0151",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0152",
-            "",
             "\1\u0153",
             "",
-            "",
             "\1\u0154",
             "\1\u0155",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u0157",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0158",
-            "\12\57\7\uffff\16\57\1\u0159\13\57\4\uffff\1\57\1\uffff\32\57",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u015a",
             "\1\u015b",
+            "",
+            "",
             "\1\u015c",
             "\1\u015d",
             "\1\u015e",
@@ -3678,37 +3792,38 @@
             "\1\u0160",
             "",
             "\1\u0161",
-            "\12\57\7\uffff\16\57\1\u0162\13\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u0164",
+            "",
+            "",
+            "\1\u0162",
+            "\1\u0163",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0165",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u0167",
-            "\1\u0168",
+            "\1\u0166",
+            "\12\61\7\uffff\16\61\1\u0167\13\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0169",
             "\1\u016a",
-            "",
             "\1\u016b",
             "\1\u016c",
             "\1\u016d",
             "\1\u016e",
             "",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "",
-            "\1\u0170",
-            "\1\u0171",
+            "\1\u016f",
+            "\12\61\7\uffff\16\61\1\u0170\13\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0172",
             "\1\u0173",
-            "\1\u0174",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0175",
             "\1\u0176",
             "\1\u0177",
             "\1\u0178",
-            "\12\57\7\uffff\16\57\1\u0179\13\57\4\uffff\1\57\1\uffff\32\57",
             "",
+            "\1\u0179",
+            "\1\u017a",
             "\1\u017b",
             "\1\u017c",
-            "\1\u017d",
+            "",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
             "\1\u017e",
             "\1\u017f",
@@ -3718,213 +3833,228 @@
             "\1\u0183",
             "\1\u0184",
             "\1\u0185",
+            "\1\u0186",
+            "\12\61\7\uffff\16\61\1\u0187\13\61\4\uffff\1\61\1\uffff\32\61",
             "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u0187",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "\1\u0189",
             "\1\u018a",
             "\1\u018b",
+            "",
             "\1\u018c",
             "\1\u018d",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "",
+            "\1\u018e",
+            "\1\u018f",
             "\1\u0190",
             "\1\u0191",
             "\1\u0192",
             "\1\u0193",
-            "\12\57\7\uffff\16\57\1\u0194\13\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u0196",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u0195",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0197",
             "\1\u0198",
             "\1\u0199",
             "\1\u019a",
-            "",
             "\1\u019b",
-            "\1\u019c",
-            "\1\u019d",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
             "\1\u019e",
             "\1\u019f",
             "\1\u01a0",
             "\1\u01a1",
-            "\1\u01a2",
-            "\1\u01a3",
+            "\12\61\7\uffff\16\61\1\u01a2\13\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01a4",
             "\1\u01a5",
-            "",
             "\1\u01a6",
-            "",
             "\1\u01a7",
             "\1\u01a8",
-            "\1\u01aa\53\uffff\1\u01a9",
+            "",
+            "\1\u01a9",
+            "\1\u01aa",
             "\1\u01ab",
             "\1\u01ac",
-            "",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u01ad",
             "\1\u01ae",
             "\1\u01af",
             "\1\u01b0",
             "\1\u01b1",
-            "",
             "\1\u01b2",
             "\1\u01b3",
+            "",
             "\1\u01b4",
+            "",
             "\1\u01b5",
             "\1\u01b6",
-            "\1\u01b7",
-            "\1\u01b8",
+            "\1\u01b8\53\uffff\1\u01b7",
             "\1\u01b9",
             "\1\u01ba",
-            "\1\u01bb",
+            "",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01bc",
             "\1\u01bd",
             "\1\u01be",
             "\1\u01bf",
-            "\12\57\7\uffff\22\57\1\u01c0\7\57\4\uffff\1\57\1\uffff\32\57",
+            "",
+            "\1\u01c0",
+            "\1\u01c1",
             "\1\u01c2",
             "\1\u01c3",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u01c4",
             "\1\u01c5",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u01c6",
             "\1\u01c7",
             "\1\u01c8",
             "\1\u01c9",
-            "",
             "\1\u01ca",
             "\1\u01cb",
             "\1\u01cc",
             "\1\u01cd",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u01cf",
+            "\12\61\7\uffff\22\61\1\u01ce\7\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01d0",
             "\1\u01d1",
-            "\1\u01d2",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01d3",
-            "\1\u01d4",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01d5",
             "\1\u01d6",
             "\1\u01d7",
+            "",
             "\1\u01d8",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u01d9",
             "\1\u01da",
             "\1\u01db",
-            "\1\u01dc",
-            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01dd",
             "\1\u01de",
-            "",
             "\1\u01df",
-            "",
             "\1\u01e0",
             "\1\u01e1",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u01e2",
             "\1\u01e3",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u01e4",
+            "\1\u01e5",
             "\1\u01e6",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01e8",
             "\1\u01e9",
             "\1\u01ea",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\4\57\1\u01ec\25\57\4\uffff\1\57\1\uffff\32\57",
+            "",
+            "\1\u01eb",
+            "\1\u01ec",
+            "",
+            "\1\u01ed",
+            "",
             "\1\u01ee",
             "\1\u01ef",
-            "\1\u01f0",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01f1",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01f4",
-            "\1\u01f5",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01f6",
             "\1\u01f7",
             "\1\u01f8",
-            "\1\u01f9",
-            "",
-            "\1\u01fa",
-            "",
-            "",
-            "\1\u01fb",
-            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\4\61\1\u01fa\25\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u01fc",
             "\1\u01fd",
             "\1\u01fe",
-            "",
             "\1\u01ff",
             "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u0201",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0202",
             "\1\u0203",
-            "",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0204",
+            "\1\u0205",
             "\1\u0206",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0207",
+            "",
             "\1\u0208",
+            "",
+            "",
             "\1\u0209",
+            "",
             "\1\u020a",
             "\1\u020b",
             "\1\u020c",
-            "\1\u020d",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u020f",
             "",
+            "\1\u020d",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u020f",
             "\1\u0210",
             "\1\u0211",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "",
             "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u0215",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u0214",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0216",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0217",
             "\1\u0218",
             "\1\u0219",
-            "",
             "\1\u021a",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\1\u021c",
-            "",
-            "",
-            "",
+            "\1\u021b",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u021d",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "",
+            "\1\u021e",
             "\1\u021f",
-            "\1\u0220",
-            "\1\u0221",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
-            "\1\u0222",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0223",
-            "",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "\1\u0224",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u0226",
             "\1\u0227",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
             "",
-            "",
-            "",
-            "\1\u0229",
-            "",
+            "\1\u0228",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u022a",
+            "",
+            "",
+            "",
             "\1\u022b",
-            "\1\u022c",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
             "\1\u022d",
             "\1\u022e",
             "\1\u022f",
+            "",
             "\1\u0230",
             "\1\u0231",
-            "\12\57\7\uffff\32\57\4\uffff\1\57\1\uffff\32\57",
+            "",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u0235",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "",
+            "",
+            "\1\u0237",
+            "",
+            "\1\u0238",
+            "\1\u0239",
+            "\1\u023a",
+            "\1\u023b",
+            "\1\u023c",
+            "\1\u023d",
+            "\1\u023e",
+            "\1\u023f",
+            "\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             ""
     };
 
@@ -3958,7 +4088,7 @@
             this.transition = DFA16_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | RULE_DECIMAL | RULE_NEGATIVE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | RULE_DECIMAL | RULE_NEGATIVE | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             IntStream input = _input;
@@ -4038,41 +4168,45 @@
 
                         else if ( (LA16_0=='/') ) {s = 35;}
 
-                        else if ( (LA16_0=='E') ) {s = 36;}
+                        else if ( (LA16_0=='I') ) {s = 36;}
 
-                        else if ( ((LA16_0>='0' && LA16_0<='9')) ) {s = 37;}
+                        else if ( (LA16_0=='V') ) {s = 37;}
 
-                        else if ( (LA16_0=='^') ) {s = 38;}
+                        else if ( (LA16_0=='E') ) {s = 38;}
 
-                        else if ( ((LA16_0>='B' && LA16_0<='D')||(LA16_0>='F' && LA16_0<='N')||(LA16_0>='P' && LA16_0<='W')||(LA16_0>='Y' && LA16_0<='Z')||LA16_0=='_'||(LA16_0>='a' && LA16_0<='b')||LA16_0=='h'||(LA16_0>='k' && LA16_0<='l')||LA16_0=='o'||LA16_0=='q'||LA16_0=='v'||(LA16_0>='x' && LA16_0<='z')) ) {s = 39;}
+                        else if ( ((LA16_0>='0' && LA16_0<='9')) ) {s = 39;}
 
-                        else if ( (LA16_0=='\"') ) {s = 40;}
+                        else if ( (LA16_0=='^') ) {s = 40;}
 
-                        else if ( (LA16_0=='\'') ) {s = 41;}
+                        else if ( ((LA16_0>='B' && LA16_0<='D')||(LA16_0>='F' && LA16_0<='H')||(LA16_0>='J' && LA16_0<='N')||(LA16_0>='P' && LA16_0<='U')||LA16_0=='W'||(LA16_0>='Y' && LA16_0<='Z')||LA16_0=='_'||(LA16_0>='a' && LA16_0<='b')||LA16_0=='h'||(LA16_0>='k' && LA16_0<='l')||LA16_0=='o'||LA16_0=='q'||LA16_0=='v'||(LA16_0>='x' && LA16_0<='z')) ) {s = 41;}
 
-                        else if ( ((LA16_0>='\t' && LA16_0<='\n')||LA16_0=='\r'||LA16_0==' ') ) {s = 42;}
+                        else if ( (LA16_0=='\"') ) {s = 42;}
 
-                        else if ( ((LA16_0>='\u0000' && LA16_0<='\b')||(LA16_0>='\u000B' && LA16_0<='\f')||(LA16_0>='\u000E' && LA16_0<='\u001F')||(LA16_0>='#' && LA16_0<='&')||LA16_0==';'||(LA16_0>='?' && LA16_0<='@')||LA16_0=='\\'||LA16_0=='`'||LA16_0=='|'||(LA16_0>='~' && LA16_0<='\uFFFF')) ) {s = 43;}
+                        else if ( (LA16_0=='\'') ) {s = 43;}
+
+                        else if ( ((LA16_0>='\t' && LA16_0<='\n')||LA16_0=='\r'||LA16_0==' ') ) {s = 44;}
+
+                        else if ( ((LA16_0>='\u0000' && LA16_0<='\b')||(LA16_0>='\u000B' && LA16_0<='\f')||(LA16_0>='\u000E' && LA16_0<='\u001F')||(LA16_0>='#' && LA16_0<='&')||LA16_0==';'||(LA16_0>='?' && LA16_0<='@')||LA16_0=='\\'||LA16_0=='`'||LA16_0=='|'||(LA16_0>='~' && LA16_0<='\uFFFF')) ) {s = 45;}
 
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA16_40 = input.LA(1);
+                        int LA16_42 = input.LA(1);
 
                         s = -1;
-                        if ( ((LA16_40>='\u0000' && LA16_40<='\uFFFF')) ) {s = 114;}
+                        if ( ((LA16_42>='\u0000' && LA16_42<='\uFFFF')) ) {s = 119;}
 
-                        else s = 43;
+                        else s = 45;
 
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA16_41 = input.LA(1);
+                        int LA16_43 = input.LA(1);
 
                         s = -1;
-                        if ( ((LA16_41>='\u0000' && LA16_41<='\uFFFF')) ) {s = 114;}
+                        if ( ((LA16_43>='\u0000' && LA16_43<='\uFFFF')) ) {s = 119;}
 
-                        else s = 43;
+                        else s = 45;
 
                         if ( s>=0 ) return s;
                         break;
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_textParser.java b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_textParser.java
index e80395b..0c56883 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_textParser.java
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/parser/antlr/internal/InternalHenshin_textParser.java
@@ -22,7 +22,7 @@
 @SuppressWarnings("all")
 public class InternalHenshin_textParser extends AbstractInternalAntlrParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_DECIMAL", "RULE_NEGATIVE", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'ePackageImport'", "'.'", "'rule'", "'('", "','", "')'", "'{'", "'}'", "'unit'", "'javaImport'", "'checkDangling'", "'injectiveMatching'", "'conditions'", "'['", "']'", "'graph'", "'preserve'", "'create'", "'delete'", "'forbid'", "'require'", "'edges'", "'->'", "':'", "'node'", "'reuse'", "'='", "'set'", "'multiRule'", "'matchingFormula'", "'formula'", "'OR'", "'XOR'", "'AND'", "'!'", "'conditionGraph'", "'strict'", "'rollback'", "'independent'", "'if'", "'then'", "'else'", "'priority'", "'for'", "'while'", "'true'", "'false'", "'=='", "'!='", "'>='", "'<='", "'>'", "'<'", "'+'", "'-'", "'*'", "'/'", "'EBigDecimal'", "'EBigInteger'", "'EBoolean'", "'EBooleanObject'", "'EByte'", "'EByteArray'", "'EByteObject'", "'EChar'", "'ECharacterObject'", "'EDate'", "'EDiagnosticChain'", "'EDouble'", "'EDoubleObject'", "'EEList'", "'EEnumerator'", "'EFeatureMap'", "'EFeatureMapEntry'", "'EFloat'", "'EFloatObject'", "'EInt'", "'EIntegerObject'", "'ETreeIterator'", "'EInvocationTargetException'", "'EJavaClass'", "'EJavaObject'", "'ELong'", "'ELongObject'", "'EMap'", "'EResource'", "'EResourceSet'", "'EShort'", "'EShortObject'", "'EString'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_DECIMAL", "RULE_NEGATIVE", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'ePackageImport'", "'.'", "'rule'", "'('", "','", "')'", "'{'", "'}'", "'unit'", "'javaImport'", "'checkDangling'", "'injectiveMatching'", "'conditions'", "'['", "']'", "'graph'", "'preserve'", "'create'", "'delete'", "'forbid'", "'require'", "'edges'", "'->'", "':'", "'node'", "'reuse'", "'='", "'set'", "'multiRule'", "'matchingFormula'", "'formula'", "'OR'", "'XOR'", "'AND'", "'!'", "'conditionGraph'", "'strict'", "'rollback'", "'independent'", "'if'", "'then'", "'else'", "'priority'", "'for'", "'while'", "'true'", "'false'", "'=='", "'!='", "'>='", "'<='", "'>'", "'<'", "'+'", "'-'", "'*'", "'/'", "'IN'", "'OUT'", "'INOUT'", "'VAR'", "'EBigDecimal'", "'EBigInteger'", "'EBoolean'", "'EBooleanObject'", "'EByte'", "'EByteArray'", "'EByteObject'", "'EChar'", "'ECharacterObject'", "'EDate'", "'EDiagnosticChain'", "'EDouble'", "'EDoubleObject'", "'EEList'", "'EEnumerator'", "'EFeatureMap'", "'EFeatureMapEntry'", "'EFloat'", "'EFloatObject'", "'EInt'", "'EIntegerObject'", "'ETreeIterator'", "'EInvocationTargetException'", "'EJavaClass'", "'EJavaObject'", "'ELong'", "'ELongObject'", "'EMap'", "'EResource'", "'EResourceSet'", "'EShort'", "'EShortObject'", "'EString'"
     };
     public static final int T__50=50;
     public static final int T__59=59;
@@ -121,9 +121,13 @@
     public static final int T__88=88;
     public static final int T__89=89;
     public static final int T__84=84;
+    public static final int T__104=104;
     public static final int T__85=85;
+    public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
+    public static final int T__105=105;
 
     // delegates
     // delegators
@@ -719,7 +723,7 @@
                     int alt5=2;
                     int LA5_0 = input.LA(1);
 
-                    if ( (LA5_0==RULE_ID) ) {
+                    if ( (LA5_0==RULE_ID||(LA5_0>=70 && LA5_0<=73)) ) {
                         alt5=1;
                     }
                     switch (alt5) {
@@ -772,7 +776,7 @@
                             	case 1 :
                             	    // InternalHenshin_text.g:271:6: otherlv_5= ',' ( (lv_parameters_6_0= ruleParameter ) )
                             	    {
-                            	    otherlv_5=(Token)match(input,17,FOLLOW_5); 
+                            	    otherlv_5=(Token)match(input,17,FOLLOW_10); 
 
                             	    						newLeafNode(otherlv_5, grammarAccess.getModelElementAccess().getCommaKeyword_0_4_1_0());
                             	    					
@@ -822,11 +826,11 @@
 
                     }
 
-                    otherlv_7=(Token)match(input,18,FOLLOW_10); 
+                    otherlv_7=(Token)match(input,18,FOLLOW_11); 
 
                     				newLeafNode(otherlv_7, grammarAccess.getModelElementAccess().getRightParenthesisKeyword_0_5());
                     			
-                    otherlv_8=(Token)match(input,19,FOLLOW_11); 
+                    otherlv_8=(Token)match(input,19,FOLLOW_12); 
 
                     				newLeafNode(otherlv_8, grammarAccess.getModelElementAccess().getLeftCurlyBracketKeyword_0_6());
                     			
@@ -852,7 +856,7 @@
 
                     	    						newCompositeNode(grammarAccess.getModelElementAccess().getRuleElementsRuleElementParserRuleCall_0_7_0());
                     	    					
-                    	    pushFollow(FOLLOW_12);
+                    	    pushFollow(FOLLOW_13);
                     	    lv_ruleElements_9_0=ruleRuleElement();
 
                     	    state._fsp--;
@@ -949,7 +953,7 @@
                     int alt8=2;
                     int LA8_0 = input.LA(1);
 
-                    if ( (LA8_0==RULE_ID) ) {
+                    if ( (LA8_0==RULE_ID||(LA8_0>=70 && LA8_0<=73)) ) {
                         alt8=1;
                     }
                     switch (alt8) {
@@ -1002,7 +1006,7 @@
                             	case 1 :
                             	    // InternalHenshin_text.g:384:6: otherlv_16= ',' ( (lv_parameters_17_0= ruleParameter ) )
                             	    {
-                            	    otherlv_16=(Token)match(input,17,FOLLOW_5); 
+                            	    otherlv_16=(Token)match(input,17,FOLLOW_10); 
 
                             	    						newLeafNode(otherlv_16, grammarAccess.getModelElementAccess().getCommaKeyword_1_4_1_0());
                             	    					
@@ -1052,11 +1056,11 @@
 
                     }
 
-                    otherlv_18=(Token)match(input,18,FOLLOW_10); 
+                    otherlv_18=(Token)match(input,18,FOLLOW_11); 
 
                     				newLeafNode(otherlv_18, grammarAccess.getModelElementAccess().getRightParenthesisKeyword_1_5());
                     			
-                    otherlv_19=(Token)match(input,19,FOLLOW_13); 
+                    otherlv_19=(Token)match(input,19,FOLLOW_14); 
 
                     				newLeafNode(otherlv_19, grammarAccess.getModelElementAccess().getLeftCurlyBracketKeyword_1_6());
                     			
@@ -1082,7 +1086,7 @@
 
                     	    						newCompositeNode(grammarAccess.getModelElementAccess().getUnitElementsUnitElementParserRuleCall_1_7_0());
                     	    					
-                    	    pushFollow(FOLLOW_14);
+                    	    pushFollow(FOLLOW_15);
                     	    lv_unitElements_20_0=ruleUnitElement();
 
                     	    state._fsp--;
@@ -1520,7 +1524,7 @@
             // InternalHenshin_text.g:564:2: (otherlv_0= 'checkDangling' ( (lv_checkDangling_1_0= ruleEBoolean ) ) )
             // InternalHenshin_text.g:565:3: otherlv_0= 'checkDangling' ( (lv_checkDangling_1_0= ruleEBoolean ) )
             {
-            otherlv_0=(Token)match(input,23,FOLLOW_15); 
+            otherlv_0=(Token)match(input,23,FOLLOW_16); 
 
             			newLeafNode(otherlv_0, grammarAccess.getCheckDanglingAccess().getCheckDanglingKeyword_0());
             		
@@ -1632,7 +1636,7 @@
             // InternalHenshin_text.g:606:2: (otherlv_0= 'injectiveMatching' ( (lv_injectiveMatching_1_0= ruleEBoolean ) ) )
             // InternalHenshin_text.g:607:3: otherlv_0= 'injectiveMatching' ( (lv_injectiveMatching_1_0= ruleEBoolean ) )
             {
-            otherlv_0=(Token)match(input,24,FOLLOW_15); 
+            otherlv_0=(Token)match(input,24,FOLLOW_16); 
 
             			newLeafNode(otherlv_0, grammarAccess.getInjectiveMatchingAccess().getInjectiveMatchingKeyword_0());
             		
@@ -1749,11 +1753,11 @@
             // InternalHenshin_text.g:648:2: (otherlv_0= 'conditions' otherlv_1= '[' ( (lv_attributeConditions_2_0= ruleExpression ) ) (otherlv_3= ',' ( (lv_attributeConditions_4_0= ruleExpression ) ) )* otherlv_5= ']' )
             // InternalHenshin_text.g:649:3: otherlv_0= 'conditions' otherlv_1= '[' ( (lv_attributeConditions_2_0= ruleExpression ) ) (otherlv_3= ',' ( (lv_attributeConditions_4_0= ruleExpression ) ) )* otherlv_5= ']'
             {
-            otherlv_0=(Token)match(input,25,FOLLOW_16); 
+            otherlv_0=(Token)match(input,25,FOLLOW_17); 
 
             			newLeafNode(otherlv_0, grammarAccess.getConditionsAccess().getConditionsKeyword_0());
             		
-            otherlv_1=(Token)match(input,26,FOLLOW_17); 
+            otherlv_1=(Token)match(input,26,FOLLOW_18); 
 
             			newLeafNode(otherlv_1, grammarAccess.getConditionsAccess().getLeftSquareBracketKeyword_1());
             		
@@ -1766,7 +1770,7 @@
 
             					newCompositeNode(grammarAccess.getConditionsAccess().getAttributeConditionsExpressionParserRuleCall_2_0());
             				
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             lv_attributeConditions_2_0=ruleExpression();
 
             state._fsp--;
@@ -1803,7 +1807,7 @@
             	case 1 :
             	    // InternalHenshin_text.g:677:4: otherlv_3= ',' ( (lv_attributeConditions_4_0= ruleExpression ) )
             	    {
-            	    otherlv_3=(Token)match(input,17,FOLLOW_17); 
+            	    otherlv_3=(Token)match(input,17,FOLLOW_18); 
 
             	    				newLeafNode(otherlv_3, grammarAccess.getConditionsAccess().getCommaKeyword_3_0());
             	    			
@@ -1816,7 +1820,7 @@
 
             	    						newCompositeNode(grammarAccess.getConditionsAccess().getAttributeConditionsExpressionParserRuleCall_3_1_0());
             	    					
-            	    pushFollow(FOLLOW_18);
+            	    pushFollow(FOLLOW_19);
             	    lv_attributeConditions_4_0=ruleExpression();
 
             	    state._fsp--;
@@ -1941,11 +1945,11 @@
 
             }
 
-            otherlv_1=(Token)match(input,28,FOLLOW_10); 
+            otherlv_1=(Token)match(input,28,FOLLOW_11); 
 
             			newLeafNode(otherlv_1, grammarAccess.getGraphAccess().getGraphKeyword_1());
             		
-            otherlv_2=(Token)match(input,19,FOLLOW_19); 
+            otherlv_2=(Token)match(input,19,FOLLOW_20); 
 
             			newLeafNode(otherlv_2, grammarAccess.getGraphAccess().getLeftCurlyBracketKeyword_2());
             		
@@ -1970,7 +1974,7 @@
 
             	    					newCompositeNode(grammarAccess.getGraphAccess().getGraphElementsGraphElementsParserRuleCall_3_0());
             	    				
-            	    pushFollow(FOLLOW_19);
+            	    pushFollow(FOLLOW_20);
             	    lv_graphElements_3_0=ruleGraphElements();
 
             	    state._fsp--;
@@ -2459,7 +2463,7 @@
             // InternalHenshin_text.g:891:2: (otherlv_0= 'edges' otherlv_1= '[' ( (lv_edges_2_0= ruleEdge ) ) (otherlv_3= ',' ( (lv_edges_4_0= ruleEdge ) ) )* otherlv_5= ']' )
             // InternalHenshin_text.g:892:3: otherlv_0= 'edges' otherlv_1= '[' ( (lv_edges_2_0= ruleEdge ) ) (otherlv_3= ',' ( (lv_edges_4_0= ruleEdge ) ) )* otherlv_5= ']'
             {
-            otherlv_0=(Token)match(input,34,FOLLOW_16); 
+            otherlv_0=(Token)match(input,34,FOLLOW_17); 
 
             			newLeafNode(otherlv_0, grammarAccess.getEdgesAccess().getEdgesKeyword_0());
             		
@@ -2476,7 +2480,7 @@
 
             					newCompositeNode(grammarAccess.getEdgesAccess().getEdgesEdgeParserRuleCall_2_0());
             				
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             lv_edges_2_0=ruleEdge();
 
             state._fsp--;
@@ -2526,7 +2530,7 @@
 
             	    						newCompositeNode(grammarAccess.getEdgesAccess().getEdgesEdgeParserRuleCall_3_1_0());
             	    					
-            	    pushFollow(FOLLOW_18);
+            	    pushFollow(FOLLOW_19);
             	    lv_edges_4_0=ruleEdge();
 
             	    state._fsp--;
@@ -2643,7 +2647,7 @@
             // InternalHenshin_text.g:966:2: (otherlv_0= '(' ( (lv_actiontype_1_0= ruleActionType ) )? ( (otherlv_2= RULE_ID ) ) otherlv_3= '->' ( (otherlv_4= RULE_ID ) ) otherlv_5= ':' ( ( ruleEString ) ) otherlv_7= ')' )
             // InternalHenshin_text.g:967:3: otherlv_0= '(' ( (lv_actiontype_1_0= ruleActionType ) )? ( (otherlv_2= RULE_ID ) ) otherlv_3= '->' ( (otherlv_4= RULE_ID ) ) otherlv_5= ':' ( ( ruleEString ) ) otherlv_7= ')'
             {
-            otherlv_0=(Token)match(input,16,FOLLOW_20); 
+            otherlv_0=(Token)match(input,16,FOLLOW_21); 
 
             			newLeafNode(otherlv_0, grammarAccess.getEdgeAccess().getLeftParenthesisKeyword_0());
             		
@@ -2700,7 +2704,7 @@
             						current = createModelElement(grammarAccess.getEdgeRule());
             					}
             				
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_21); 
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_22); 
 
             					newLeafNode(otherlv_2, grammarAccess.getEdgeAccess().getSourceRuleNodeTypesCrossReference_2_0());
             				
@@ -2725,7 +2729,7 @@
             						current = createModelElement(grammarAccess.getEdgeRule());
             					}
             				
-            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_22); 
+            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_23); 
 
             					newLeafNode(otherlv_4, grammarAccess.getEdgeAccess().getTargetRuleNodeTypesCrossReference_4_0());
             				
@@ -2753,7 +2757,7 @@
 
             					newCompositeNode(grammarAccess.getEdgeAccess().getTypeEReferenceCrossReference_6_0());
             				
-            pushFollow(FOLLOW_23);
+            pushFollow(FOLLOW_24);
             ruleEString();
 
             state._fsp--;
@@ -2871,7 +2875,7 @@
 
                     					newCompositeNode(grammarAccess.getNodeAccess().getActiontypeActionTypeParserRuleCall_0_0());
                     				
-                    pushFollow(FOLLOW_24);
+                    pushFollow(FOLLOW_25);
                     lv_actiontype_0_0=ruleActionType();
 
                     state._fsp--;
@@ -2906,7 +2910,7 @@
             // InternalHenshin_text.g:1087:4: (lv_name_2_0= RULE_ID )
             // InternalHenshin_text.g:1088:5: lv_name_2_0= RULE_ID
             {
-            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_22); 
+            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_23); 
 
             					newLeafNode(lv_name_2_0, grammarAccess.getNodeAccess().getNameIDTerminalRuleCall_2_0());
             				
@@ -2944,7 +2948,7 @@
 
             					newCompositeNode(grammarAccess.getNodeAccess().getNodetypeEClassCrossReference_4_0());
             				
-            pushFollow(FOLLOW_25);
+            pushFollow(FOLLOW_26);
             ruleEString();
 
             state._fsp--;
@@ -2969,7 +2973,7 @@
                 case 1 :
                     // InternalHenshin_text.g:1125:4: otherlv_5= '{' ( (lv_attribute_6_0= ruleAttribute ) )* otherlv_7= '}'
                     {
-                    otherlv_5=(Token)match(input,19,FOLLOW_26); 
+                    otherlv_5=(Token)match(input,19,FOLLOW_27); 
 
                     				newLeafNode(otherlv_5, grammarAccess.getNodeAccess().getLeftCurlyBracketKeyword_5_0());
                     			
@@ -2994,7 +2998,7 @@
 
                     	    						newCompositeNode(grammarAccess.getNodeAccess().getAttributeAttributeParserRuleCall_5_1_0());
                     	    					
-                    	    pushFollow(FOLLOW_26);
+                    	    pushFollow(FOLLOW_27);
                     	    lv_attribute_6_0=ruleAttribute();
 
                     	    state._fsp--;
@@ -3127,7 +3131,7 @@
             						current = createModelElement(grammarAccess.getMultiRuleReuseNodeRule());
             					}
             				
-            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_25); 
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_26); 
 
             					newLeafNode(otherlv_1, grammarAccess.getMultiRuleReuseNodeAccess().getNameNodeCrossReference_1_0());
             				
@@ -3148,7 +3152,7 @@
                 case 1 :
                     // InternalHenshin_text.g:1190:4: otherlv_2= '{' ( (lv_attribute_3_0= ruleAttribute ) )* otherlv_4= '}'
                     {
-                    otherlv_2=(Token)match(input,19,FOLLOW_26); 
+                    otherlv_2=(Token)match(input,19,FOLLOW_27); 
 
                     				newLeafNode(otherlv_2, grammarAccess.getMultiRuleReuseNodeAccess().getLeftCurlyBracketKeyword_2_0());
                     			
@@ -3173,7 +3177,7 @@
 
                     	    						newCompositeNode(grammarAccess.getMultiRuleReuseNodeAccess().getAttributeAttributeParserRuleCall_2_1_0());
                     	    					
-                    	    pushFollow(FOLLOW_26);
+                    	    pushFollow(FOLLOW_27);
                     	    lv_attribute_3_0=ruleAttribute();
 
                     	    state._fsp--;
@@ -3370,7 +3374,7 @@
 
                     						newCompositeNode(grammarAccess.getAttributeAccess().getNameEAttributeCrossReference_0_1_0());
                     					
-                    pushFollow(FOLLOW_27);
+                    pushFollow(FOLLOW_28);
                     ruleEString();
 
                     state._fsp--;
@@ -3384,7 +3388,7 @@
 
                     }
 
-                    otherlv_2=(Token)match(input,39,FOLLOW_17); 
+                    otherlv_2=(Token)match(input,39,FOLLOW_18); 
 
                     				newLeafNode(otherlv_2, grammarAccess.getAttributeAccess().getEqualsSignKeyword_0_2());
                     			
@@ -3467,7 +3471,7 @@
 
                     						newCompositeNode(grammarAccess.getAttributeAccess().getNameEAttributeCrossReference_1_1_0());
                     					
-                    pushFollow(FOLLOW_27);
+                    pushFollow(FOLLOW_28);
                     ruleEString();
 
                     state._fsp--;
@@ -3481,7 +3485,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,39,FOLLOW_17); 
+                    otherlv_6=(Token)match(input,39,FOLLOW_18); 
 
                     				newLeafNode(otherlv_6, grammarAccess.getAttributeAccess().getEqualsSignKeyword_1_2());
                     			
@@ -3612,7 +3616,7 @@
             // InternalHenshin_text.g:1377:4: (lv_name_1_0= RULE_ID )
             // InternalHenshin_text.g:1378:5: lv_name_1_0= RULE_ID
             {
-            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_10); 
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_11); 
 
             					newLeafNode(lv_name_1_0, grammarAccess.getMultiRuleAccess().getNameIDTerminalRuleCall_1_0());
             				
@@ -3632,7 +3636,7 @@
 
             }
 
-            otherlv_2=(Token)match(input,19,FOLLOW_11); 
+            otherlv_2=(Token)match(input,19,FOLLOW_12); 
 
             			newLeafNode(otherlv_2, grammarAccess.getMultiRuleAccess().getLeftCurlyBracketKeyword_2());
             		
@@ -3658,7 +3662,7 @@
 
             	    					newCompositeNode(grammarAccess.getMultiRuleAccess().getMultiruleElementsRuleElementParserRuleCall_3_0());
             	    				
-            	    pushFollow(FOLLOW_12);
+            	    pushFollow(FOLLOW_13);
             	    lv_multiruleElements_3_0=ruleRuleElement();
 
             	    state._fsp--;
@@ -3776,15 +3780,15 @@
             // InternalHenshin_text.g:1439:2: (otherlv_0= 'matchingFormula' otherlv_1= '{' otherlv_2= 'formula' ( (lv_formula_3_0= ruleLogic ) ) ( (lv_conditionGraphs_4_0= ruleConditionGraph ) )+ otherlv_5= '}' )
             // InternalHenshin_text.g:1440:3: otherlv_0= 'matchingFormula' otherlv_1= '{' otherlv_2= 'formula' ( (lv_formula_3_0= ruleLogic ) ) ( (lv_conditionGraphs_4_0= ruleConditionGraph ) )+ otherlv_5= '}'
             {
-            otherlv_0=(Token)match(input,42,FOLLOW_10); 
+            otherlv_0=(Token)match(input,42,FOLLOW_11); 
 
             			newLeafNode(otherlv_0, grammarAccess.getFormulaAccess().getMatchingFormulaKeyword_0());
             		
-            otherlv_1=(Token)match(input,19,FOLLOW_28); 
+            otherlv_1=(Token)match(input,19,FOLLOW_29); 
 
             			newLeafNode(otherlv_1, grammarAccess.getFormulaAccess().getLeftCurlyBracketKeyword_1());
             		
-            otherlv_2=(Token)match(input,43,FOLLOW_29); 
+            otherlv_2=(Token)match(input,43,FOLLOW_30); 
 
             			newLeafNode(otherlv_2, grammarAccess.getFormulaAccess().getFormulaKeyword_2());
             		
@@ -3797,7 +3801,7 @@
 
             					newCompositeNode(grammarAccess.getFormulaAccess().getFormulaLogicParserRuleCall_3_0());
             				
-            pushFollow(FOLLOW_30);
+            pushFollow(FOLLOW_31);
             lv_formula_3_0=ruleLogic();
 
             state._fsp--;
@@ -3841,7 +3845,7 @@
 
             	    					newCompositeNode(grammarAccess.getFormulaAccess().getConditionGraphsConditionGraphParserRuleCall_4_0());
             	    				
-            	    pushFollow(FOLLOW_31);
+            	    pushFollow(FOLLOW_32);
             	    lv_conditionGraphs_4_0=ruleConditionGraph();
 
             	    state._fsp--;
@@ -4042,7 +4046,7 @@
 
             			newCompositeNode(grammarAccess.getORorXORAccess().getANDParserRuleCall_0());
             		
-            pushFollow(FOLLOW_32);
+            pushFollow(FOLLOW_33);
             this_AND_0=ruleAND();
 
             state._fsp--;
@@ -4103,7 +4107,7 @@
             	        case 1 :
             	            // InternalHenshin_text.g:1557:7: lv_op_2_1= 'OR'
             	            {
-            	            lv_op_2_1=(Token)match(input,44,FOLLOW_29); 
+            	            lv_op_2_1=(Token)match(input,44,FOLLOW_30); 
 
             	            							newLeafNode(lv_op_2_1, grammarAccess.getORorXORAccess().getOpORKeyword_1_1_0_0());
             	            						
@@ -4119,7 +4123,7 @@
             	        case 2 :
             	            // InternalHenshin_text.g:1568:7: lv_op_2_2= 'XOR'
             	            {
-            	            lv_op_2_2=(Token)match(input,45,FOLLOW_29); 
+            	            lv_op_2_2=(Token)match(input,45,FOLLOW_30); 
 
             	            							newLeafNode(lv_op_2_2, grammarAccess.getORorXORAccess().getOpXORKeyword_1_1_0_1());
             	            						
@@ -4150,7 +4154,7 @@
 
             	    						newCompositeNode(grammarAccess.getORorXORAccess().getRightANDParserRuleCall_1_2_0());
             	    					
-            	    pushFollow(FOLLOW_32);
+            	    pushFollow(FOLLOW_33);
             	    lv_right_3_0=ruleAND();
 
             	    state._fsp--;
@@ -4263,7 +4267,7 @@
 
             			newCompositeNode(grammarAccess.getANDAccess().getPrimaryParserRuleCall_0());
             		
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_34);
             this_Primary_0=rulePrimary();
 
             state._fsp--;
@@ -4298,7 +4302,7 @@
 
             	    }
 
-            	    otherlv_2=(Token)match(input,46,FOLLOW_29); 
+            	    otherlv_2=(Token)match(input,46,FOLLOW_30); 
 
             	    				newLeafNode(otherlv_2, grammarAccess.getANDAccess().getANDKeyword_1_1());
             	    			
@@ -4311,7 +4315,7 @@
 
             	    						newCompositeNode(grammarAccess.getANDAccess().getRightPrimaryParserRuleCall_1_2_0());
             	    					
-            	    pushFollow(FOLLOW_33);
+            	    pushFollow(FOLLOW_34);
             	    lv_right_3_0=rulePrimary();
 
             	    state._fsp--;
@@ -4454,14 +4458,14 @@
                     // InternalHenshin_text.g:1679:3: (otherlv_0= '(' this_Logic_1= ruleLogic otherlv_2= ')' )
                     // InternalHenshin_text.g:1680:4: otherlv_0= '(' this_Logic_1= ruleLogic otherlv_2= ')'
                     {
-                    otherlv_0=(Token)match(input,16,FOLLOW_29); 
+                    otherlv_0=(Token)match(input,16,FOLLOW_30); 
 
                     				newLeafNode(otherlv_0, grammarAccess.getPrimaryAccess().getLeftParenthesisKeyword_0_0());
                     			
 
                     				newCompositeNode(grammarAccess.getPrimaryAccess().getLogicParserRuleCall_0_1());
                     			
-                    pushFollow(FOLLOW_23);
+                    pushFollow(FOLLOW_24);
                     this_Logic_1=ruleLogic();
 
                     state._fsp--;
@@ -4497,7 +4501,7 @@
 
                     }
 
-                    otherlv_4=(Token)match(input,47,FOLLOW_29); 
+                    otherlv_4=(Token)match(input,47,FOLLOW_30); 
 
                     				newLeafNode(otherlv_4, grammarAccess.getPrimaryAccess().getExclamationMarkKeyword_1_1());
                     			
@@ -4753,7 +4757,7 @@
             // InternalHenshin_text.g:1802:4: (lv_name_1_0= RULE_ID )
             // InternalHenshin_text.g:1803:5: lv_name_1_0= RULE_ID
             {
-            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_10); 
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_11); 
 
             					newLeafNode(lv_name_1_0, grammarAccess.getConditionGraphAccess().getNameIDTerminalRuleCall_1_0());
             				
@@ -4773,7 +4777,7 @@
 
             }
 
-            otherlv_2=(Token)match(input,19,FOLLOW_34); 
+            otherlv_2=(Token)match(input,19,FOLLOW_35); 
 
             			newLeafNode(otherlv_2, grammarAccess.getConditionGraphAccess().getLeftCurlyBracketKeyword_2());
             		
@@ -4798,7 +4802,7 @@
 
             	    					newCompositeNode(grammarAccess.getConditionGraphAccess().getConditionGraphElementsConditionGraphElementsParserRuleCall_3_0());
             	    				
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_35);
             	    lv_conditionGraphElements_3_0=ruleConditionGraphElements();
 
             	    state._fsp--;
@@ -5094,7 +5098,7 @@
             // InternalHenshin_text.g:1918:2: (otherlv_0= 'edges' otherlv_1= '[' ( (lv_edges_2_0= ruleConditionEdge ) ) (otherlv_3= ',' ( (lv_edges_4_0= ruleConditionEdge ) ) )* otherlv_5= ']' )
             // InternalHenshin_text.g:1919:3: otherlv_0= 'edges' otherlv_1= '[' ( (lv_edges_2_0= ruleConditionEdge ) ) (otherlv_3= ',' ( (lv_edges_4_0= ruleConditionEdge ) ) )* otherlv_5= ']'
             {
-            otherlv_0=(Token)match(input,34,FOLLOW_16); 
+            otherlv_0=(Token)match(input,34,FOLLOW_17); 
 
             			newLeafNode(otherlv_0, grammarAccess.getConditionEdgesAccess().getEdgesKeyword_0());
             		
@@ -5111,7 +5115,7 @@
 
             					newCompositeNode(grammarAccess.getConditionEdgesAccess().getEdgesConditionEdgeParserRuleCall_2_0());
             				
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             lv_edges_2_0=ruleConditionEdge();
 
             state._fsp--;
@@ -5161,7 +5165,7 @@
 
             	    						newCompositeNode(grammarAccess.getConditionEdgesAccess().getEdgesConditionEdgeParserRuleCall_3_1_0());
             	    					
-            	    pushFollow(FOLLOW_18);
+            	    pushFollow(FOLLOW_19);
             	    lv_edges_4_0=ruleConditionEdge();
 
             	    state._fsp--;
@@ -5291,7 +5295,7 @@
             						current = createModelElement(grammarAccess.getConditionEdgeRule());
             					}
             				
-            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_21); 
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_22); 
 
             					newLeafNode(otherlv_1, grammarAccess.getConditionEdgeAccess().getSourceConditionNodeTypesCrossReference_1_0());
             				
@@ -5316,7 +5320,7 @@
             						current = createModelElement(grammarAccess.getConditionEdgeRule());
             					}
             				
-            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_22); 
+            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_23); 
 
             					newLeafNode(otherlv_3, grammarAccess.getConditionEdgeAccess().getTargetConditionNodeTypesCrossReference_3_0());
             				
@@ -5344,7 +5348,7 @@
 
             					newCompositeNode(grammarAccess.getConditionEdgeAccess().getTypeEReferenceCrossReference_5_0());
             				
-            pushFollow(FOLLOW_23);
+            pushFollow(FOLLOW_24);
             ruleEString();
 
             state._fsp--;
@@ -5453,7 +5457,7 @@
             // InternalHenshin_text.g:2076:4: (lv_name_1_0= RULE_ID )
             // InternalHenshin_text.g:2077:5: lv_name_1_0= RULE_ID
             {
-            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_22); 
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_23); 
 
             					newLeafNode(lv_name_1_0, grammarAccess.getConditionNodeAccess().getNameIDTerminalRuleCall_1_0());
             				
@@ -5491,7 +5495,7 @@
 
             					newCompositeNode(grammarAccess.getConditionNodeAccess().getTypeEClassCrossReference_3_0());
             				
-            pushFollow(FOLLOW_25);
+            pushFollow(FOLLOW_26);
             ruleEString();
 
             state._fsp--;
@@ -5516,7 +5520,7 @@
                 case 1 :
                     // InternalHenshin_text.g:2114:4: otherlv_4= '{' ( (lv_attribute_5_0= ruleMatch ) )* otherlv_6= '}'
                     {
-                    otherlv_4=(Token)match(input,19,FOLLOW_35); 
+                    otherlv_4=(Token)match(input,19,FOLLOW_36); 
 
                     				newLeafNode(otherlv_4, grammarAccess.getConditionNodeAccess().getLeftCurlyBracketKeyword_4_0());
                     			
@@ -5541,7 +5545,7 @@
 
                     	    						newCompositeNode(grammarAccess.getConditionNodeAccess().getAttributeMatchParserRuleCall_4_1_0());
                     	    					
-                    	    pushFollow(FOLLOW_35);
+                    	    pushFollow(FOLLOW_36);
                     	    lv_attribute_5_0=ruleMatch();
 
                     	    state._fsp--;
@@ -5674,7 +5678,7 @@
             						current = createModelElement(grammarAccess.getConditionReuseNodeRule());
             					}
             				
-            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_25); 
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_26); 
 
             					newLeafNode(otherlv_1, grammarAccess.getConditionReuseNodeAccess().getNameConditionNodeTypesCrossReference_1_0());
             				
@@ -5695,7 +5699,7 @@
                 case 1 :
                     // InternalHenshin_text.g:2179:4: otherlv_2= '{' ( (lv_attribute_3_0= ruleMatch ) )* otherlv_4= '}'
                     {
-                    otherlv_2=(Token)match(input,19,FOLLOW_35); 
+                    otherlv_2=(Token)match(input,19,FOLLOW_36); 
 
                     				newLeafNode(otherlv_2, grammarAccess.getConditionReuseNodeAccess().getLeftCurlyBracketKeyword_2_0());
                     			
@@ -5720,7 +5724,7 @@
 
                     	    						newCompositeNode(grammarAccess.getConditionReuseNodeAccess().getAttributeMatchParserRuleCall_2_1_0());
                     	    					
-                    	    pushFollow(FOLLOW_35);
+                    	    pushFollow(FOLLOW_36);
                     	    lv_attribute_3_0=ruleMatch();
 
                     	    state._fsp--;
@@ -5849,7 +5853,7 @@
 
             					newCompositeNode(grammarAccess.getMatchAccess().getNameEAttributeCrossReference_0_0());
             				
-            pushFollow(FOLLOW_27);
+            pushFollow(FOLLOW_28);
             ruleEString();
 
             state._fsp--;
@@ -5863,7 +5867,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,39,FOLLOW_17); 
+            otherlv_1=(Token)match(input,39,FOLLOW_18); 
 
             			newLeafNode(otherlv_1, grammarAccess.getMatchAccess().getEqualsSignKeyword_1());
             		
@@ -6081,7 +6085,7 @@
 
                     }
 
-                    otherlv_2=(Token)match(input,16,FOLLOW_8); 
+                    otherlv_2=(Token)match(input,16,FOLLOW_37); 
 
                     				newLeafNode(otherlv_2, grammarAccess.getUnitElementAccess().getLeftParenthesisKeyword_0_2());
                     			
@@ -6188,7 +6192,7 @@
                     // InternalHenshin_text.g:2349:3: (otherlv_7= '{' ( (lv_subSequence_8_0= ruleUnitElement ) )+ otherlv_9= '}' )
                     // InternalHenshin_text.g:2350:4: otherlv_7= '{' ( (lv_subSequence_8_0= ruleUnitElement ) )+ otherlv_9= '}'
                     {
-                    otherlv_7=(Token)match(input,19,FOLLOW_13); 
+                    otherlv_7=(Token)match(input,19,FOLLOW_14); 
 
                     				newLeafNode(otherlv_7, grammarAccess.getUnitElementAccess().getLeftCurlyBracketKeyword_1_0());
                     			
@@ -6214,7 +6218,7 @@
 
                     	    						newCompositeNode(grammarAccess.getUnitElementAccess().getSubSequenceUnitElementParserRuleCall_1_1_0());
                     	    					
-                    	    pushFollow(FOLLOW_14);
+                    	    pushFollow(FOLLOW_15);
                     	    lv_subSequence_8_0=ruleUnitElement();
 
                     	    state._fsp--;
@@ -6569,7 +6573,7 @@
             // InternalHenshin_text.g:2486:2: (otherlv_0= 'strict' ( (lv_strict_1_0= ruleEBoolean ) ) )
             // InternalHenshin_text.g:2487:3: otherlv_0= 'strict' ( (lv_strict_1_0= ruleEBoolean ) )
             {
-            otherlv_0=(Token)match(input,49,FOLLOW_15); 
+            otherlv_0=(Token)match(input,49,FOLLOW_16); 
 
             			newLeafNode(otherlv_0, grammarAccess.getStrictAccess().getStrictKeyword_0());
             		
@@ -6681,7 +6685,7 @@
             // InternalHenshin_text.g:2528:2: (otherlv_0= 'rollback' ( (lv_rollback_1_0= ruleEBoolean ) ) )
             // InternalHenshin_text.g:2529:3: otherlv_0= 'rollback' ( (lv_rollback_1_0= ruleEBoolean ) )
             {
-            otherlv_0=(Token)match(input,50,FOLLOW_15); 
+            otherlv_0=(Token)match(input,50,FOLLOW_16); 
 
             			newLeafNode(otherlv_0, grammarAccess.getRollbackAccess().getRollbackKeyword_0());
             		
@@ -6811,7 +6815,7 @@
 
             	    				newCompositeNode(grammarAccess.getListAccess().getSubElementsUnitElementParserRuleCall_0());
             	    			
-            	    pushFollow(FOLLOW_36);
+            	    pushFollow(FOLLOW_38);
             	    lv_subElements_0_0=ruleUnitElement();
 
             	    state._fsp--;
@@ -6922,11 +6926,11 @@
             // InternalHenshin_text.g:2606:2: (otherlv_0= 'independent' otherlv_1= '[' ( (lv_listOfLists_2_0= ruleList ) ) (otherlv_3= ',' ( (lv_listOfLists_4_0= ruleList ) ) )* otherlv_5= ']' )
             // InternalHenshin_text.g:2607:3: otherlv_0= 'independent' otherlv_1= '[' ( (lv_listOfLists_2_0= ruleList ) ) (otherlv_3= ',' ( (lv_listOfLists_4_0= ruleList ) ) )* otherlv_5= ']'
             {
-            otherlv_0=(Token)match(input,51,FOLLOW_16); 
+            otherlv_0=(Token)match(input,51,FOLLOW_17); 
 
             			newLeafNode(otherlv_0, grammarAccess.getIndependentUnitAccess().getIndependentKeyword_0());
             		
-            otherlv_1=(Token)match(input,26,FOLLOW_13); 
+            otherlv_1=(Token)match(input,26,FOLLOW_14); 
 
             			newLeafNode(otherlv_1, grammarAccess.getIndependentUnitAccess().getLeftSquareBracketKeyword_1());
             		
@@ -6939,7 +6943,7 @@
 
             					newCompositeNode(grammarAccess.getIndependentUnitAccess().getListOfListsListParserRuleCall_2_0());
             				
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             lv_listOfLists_2_0=ruleList();
 
             state._fsp--;
@@ -6976,7 +6980,7 @@
             	case 1 :
             	    // InternalHenshin_text.g:2635:4: otherlv_3= ',' ( (lv_listOfLists_4_0= ruleList ) )
             	    {
-            	    otherlv_3=(Token)match(input,17,FOLLOW_13); 
+            	    otherlv_3=(Token)match(input,17,FOLLOW_14); 
 
             	    				newLeafNode(otherlv_3, grammarAccess.getIndependentUnitAccess().getCommaKeyword_3_0());
             	    			
@@ -6989,7 +6993,7 @@
 
             	    						newCompositeNode(grammarAccess.getIndependentUnitAccess().getListOfListsListParserRuleCall_3_1_0());
             	    					
-            	    pushFollow(FOLLOW_18);
+            	    pushFollow(FOLLOW_19);
             	    lv_listOfLists_4_0=ruleList();
 
             	    state._fsp--;
@@ -7117,7 +7121,7 @@
 
             			newLeafNode(otherlv_0, grammarAccess.getConditionalUnitAccess().getIfKeyword_0());
             		
-            otherlv_1=(Token)match(input,16,FOLLOW_13); 
+            otherlv_1=(Token)match(input,16,FOLLOW_14); 
 
             			newLeafNode(otherlv_1, grammarAccess.getConditionalUnitAccess().getLeftParenthesisKeyword_1());
             		
@@ -7143,7 +7147,7 @@
 
             	    					newCompositeNode(grammarAccess.getConditionalUnitAccess().getIfUnitElementParserRuleCall_2_0());
             	    				
-            	    pushFollow(FOLLOW_37);
+            	    pushFollow(FOLLOW_39);
             	    lv_if_2_0=ruleUnitElement();
 
             	    state._fsp--;
@@ -7175,15 +7179,15 @@
                 cnt45++;
             } while (true);
 
-            otherlv_3=(Token)match(input,18,FOLLOW_38); 
+            otherlv_3=(Token)match(input,18,FOLLOW_40); 
 
             			newLeafNode(otherlv_3, grammarAccess.getConditionalUnitAccess().getRightParenthesisKeyword_3());
             		
-            otherlv_4=(Token)match(input,53,FOLLOW_10); 
+            otherlv_4=(Token)match(input,53,FOLLOW_11); 
 
             			newLeafNode(otherlv_4, grammarAccess.getConditionalUnitAccess().getThenKeyword_4());
             		
-            otherlv_5=(Token)match(input,19,FOLLOW_13); 
+            otherlv_5=(Token)match(input,19,FOLLOW_14); 
 
             			newLeafNode(otherlv_5, grammarAccess.getConditionalUnitAccess().getLeftCurlyBracketKeyword_5());
             		
@@ -7209,7 +7213,7 @@
 
             	    					newCompositeNode(grammarAccess.getConditionalUnitAccess().getThenUnitElementParserRuleCall_6_0());
             	    				
-            	    pushFollow(FOLLOW_14);
+            	    pushFollow(FOLLOW_15);
             	    lv_then_6_0=ruleUnitElement();
 
             	    state._fsp--;
@@ -7241,7 +7245,7 @@
                 cnt46++;
             } while (true);
 
-            otherlv_7=(Token)match(input,20,FOLLOW_39); 
+            otherlv_7=(Token)match(input,20,FOLLOW_41); 
 
             			newLeafNode(otherlv_7, grammarAccess.getConditionalUnitAccess().getRightCurlyBracketKeyword_7());
             		
@@ -7256,11 +7260,11 @@
                 case 1 :
                     // InternalHenshin_text.g:2745:4: otherlv_8= 'else' otherlv_9= '{' ( (lv_else_10_0= ruleUnitElement ) )+ otherlv_11= '}'
                     {
-                    otherlv_8=(Token)match(input,54,FOLLOW_10); 
+                    otherlv_8=(Token)match(input,54,FOLLOW_11); 
 
                     				newLeafNode(otherlv_8, grammarAccess.getConditionalUnitAccess().getElseKeyword_8_0());
                     			
-                    otherlv_9=(Token)match(input,19,FOLLOW_13); 
+                    otherlv_9=(Token)match(input,19,FOLLOW_14); 
 
                     				newLeafNode(otherlv_9, grammarAccess.getConditionalUnitAccess().getLeftCurlyBracketKeyword_8_1());
                     			
@@ -7286,7 +7290,7 @@
 
                     	    						newCompositeNode(grammarAccess.getConditionalUnitAccess().getElseUnitElementParserRuleCall_8_2_0());
                     	    					
-                    	    pushFollow(FOLLOW_14);
+                    	    pushFollow(FOLLOW_15);
                     	    lv_else_10_0=ruleUnitElement();
 
                     	    state._fsp--;
@@ -7410,11 +7414,11 @@
             // InternalHenshin_text.g:2795:2: (otherlv_0= 'priority' otherlv_1= '[' ( (lv_listOfLists_2_0= ruleList ) ) (otherlv_3= ',' ( (lv_listOfLists_4_0= ruleList ) ) )* otherlv_5= ']' )
             // InternalHenshin_text.g:2796:3: otherlv_0= 'priority' otherlv_1= '[' ( (lv_listOfLists_2_0= ruleList ) ) (otherlv_3= ',' ( (lv_listOfLists_4_0= ruleList ) ) )* otherlv_5= ']'
             {
-            otherlv_0=(Token)match(input,55,FOLLOW_16); 
+            otherlv_0=(Token)match(input,55,FOLLOW_17); 
 
             			newLeafNode(otherlv_0, grammarAccess.getPriorityUnitAccess().getPriorityKeyword_0());
             		
-            otherlv_1=(Token)match(input,26,FOLLOW_13); 
+            otherlv_1=(Token)match(input,26,FOLLOW_14); 
 
             			newLeafNode(otherlv_1, grammarAccess.getPriorityUnitAccess().getLeftSquareBracketKeyword_1());
             		
@@ -7427,7 +7431,7 @@
 
             					newCompositeNode(grammarAccess.getPriorityUnitAccess().getListOfListsListParserRuleCall_2_0());
             				
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_19);
             lv_listOfLists_2_0=ruleList();
 
             state._fsp--;
@@ -7464,7 +7468,7 @@
             	case 1 :
             	    // InternalHenshin_text.g:2824:4: otherlv_3= ',' ( (lv_listOfLists_4_0= ruleList ) )
             	    {
-            	    otherlv_3=(Token)match(input,17,FOLLOW_13); 
+            	    otherlv_3=(Token)match(input,17,FOLLOW_14); 
 
             	    				newLeafNode(otherlv_3, grammarAccess.getPriorityUnitAccess().getCommaKeyword_3_0());
             	    			
@@ -7477,7 +7481,7 @@
 
             	    						newCompositeNode(grammarAccess.getPriorityUnitAccess().getListOfListsListParserRuleCall_3_1_0());
             	    					
-            	    pushFollow(FOLLOW_18);
+            	    pushFollow(FOLLOW_19);
             	    lv_listOfLists_4_0=ruleList();
 
             	    state._fsp--;
@@ -7610,7 +7614,7 @@
 
             			newLeafNode(otherlv_1, grammarAccess.getIteratedUnitAccess().getForKeyword_1());
             		
-            otherlv_2=(Token)match(input,16,FOLLOW_17); 
+            otherlv_2=(Token)match(input,16,FOLLOW_18); 
 
             			newLeafNode(otherlv_2, grammarAccess.getIteratedUnitAccess().getLeftParenthesisKeyword_2());
             		
@@ -7623,7 +7627,7 @@
 
             					newCompositeNode(grammarAccess.getIteratedUnitAccess().getIterationsExpressionParserRuleCall_3_0());
             				
-            pushFollow(FOLLOW_23);
+            pushFollow(FOLLOW_24);
             lv_iterations_3_0=ruleExpression();
 
             state._fsp--;
@@ -7645,11 +7649,11 @@
 
             }
 
-            otherlv_4=(Token)match(input,18,FOLLOW_10); 
+            otherlv_4=(Token)match(input,18,FOLLOW_11); 
 
             			newLeafNode(otherlv_4, grammarAccess.getIteratedUnitAccess().getRightParenthesisKeyword_4());
             		
-            otherlv_5=(Token)match(input,19,FOLLOW_13); 
+            otherlv_5=(Token)match(input,19,FOLLOW_14); 
 
             			newLeafNode(otherlv_5, grammarAccess.getIteratedUnitAccess().getLeftCurlyBracketKeyword_5());
             		
@@ -7675,7 +7679,7 @@
 
             	    					newCompositeNode(grammarAccess.getIteratedUnitAccess().getSubElementUnitElementParserRuleCall_6_0());
             	    				
-            	    pushFollow(FOLLOW_14);
+            	    pushFollow(FOLLOW_15);
             	    lv_subElement_6_0=ruleUnitElement();
 
             	    state._fsp--;
@@ -7790,11 +7794,11 @@
             // InternalHenshin_text.g:2954:2: (otherlv_0= 'while' otherlv_1= '{' ( (lv_subElement_2_0= ruleUnitElement ) )+ otherlv_3= '}' )
             // InternalHenshin_text.g:2955:3: otherlv_0= 'while' otherlv_1= '{' ( (lv_subElement_2_0= ruleUnitElement ) )+ otherlv_3= '}'
             {
-            otherlv_0=(Token)match(input,57,FOLLOW_10); 
+            otherlv_0=(Token)match(input,57,FOLLOW_11); 
 
             			newLeafNode(otherlv_0, grammarAccess.getLoopUnitAccess().getWhileKeyword_0());
             		
-            otherlv_1=(Token)match(input,19,FOLLOW_13); 
+            otherlv_1=(Token)match(input,19,FOLLOW_14); 
 
             			newLeafNode(otherlv_1, grammarAccess.getLoopUnitAccess().getLeftCurlyBracketKeyword_1());
             		
@@ -7820,7 +7824,7 @@
 
             	    					newCompositeNode(grammarAccess.getLoopUnitAccess().getSubElementUnitElementParserRuleCall_2_0());
             	    				
-            	    pushFollow(FOLLOW_14);
+            	    pushFollow(FOLLOW_15);
             	    lv_subElement_2_0=ruleUnitElement();
 
             	    state._fsp--;
@@ -7915,34 +7919,78 @@
 
 
     // $ANTLR start "ruleParameter"
-    // InternalHenshin_text.g:2997:1: ruleParameter returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_type_2_0= ruleParameterType ) ) ) ;
+    // InternalHenshin_text.g:2997:1: ruleParameter returns [EObject current=null] : ( ( (lv_kind_0_0= ruleParameterKindRule ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_type_3_0= ruleParameterType ) ) ) ;
     public final EObject ruleParameter() throws RecognitionException {
         EObject current = null;
 
-        Token lv_name_0_0=null;
-        Token otherlv_1=null;
-        EObject lv_type_2_0 = null;
+        Token lv_name_1_0=null;
+        Token otherlv_2=null;
+        Enumerator lv_kind_0_0 = null;
+
+        EObject lv_type_3_0 = null;
 
 
 
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3003:2: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_type_2_0= ruleParameterType ) ) ) )
-            // InternalHenshin_text.g:3004:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_type_2_0= ruleParameterType ) ) )
+            // InternalHenshin_text.g:3003:2: ( ( ( (lv_kind_0_0= ruleParameterKindRule ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_type_3_0= ruleParameterType ) ) ) )
+            // InternalHenshin_text.g:3004:2: ( ( (lv_kind_0_0= ruleParameterKindRule ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_type_3_0= ruleParameterType ) ) )
             {
-            // InternalHenshin_text.g:3004:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_type_2_0= ruleParameterType ) ) )
-            // InternalHenshin_text.g:3005:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_type_2_0= ruleParameterType ) )
+            // InternalHenshin_text.g:3004:2: ( ( (lv_kind_0_0= ruleParameterKindRule ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_type_3_0= ruleParameterType ) ) )
+            // InternalHenshin_text.g:3005:3: ( (lv_kind_0_0= ruleParameterKindRule ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_type_3_0= ruleParameterType ) )
             {
-            // InternalHenshin_text.g:3005:3: ( (lv_name_0_0= RULE_ID ) )
-            // InternalHenshin_text.g:3006:4: (lv_name_0_0= RULE_ID )
-            {
-            // InternalHenshin_text.g:3006:4: (lv_name_0_0= RULE_ID )
-            // InternalHenshin_text.g:3007:5: lv_name_0_0= RULE_ID
-            {
-            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_22); 
+            // InternalHenshin_text.g:3005:3: ( (lv_kind_0_0= ruleParameterKindRule ) )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
 
-            					newLeafNode(lv_name_0_0, grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0());
+            if ( ((LA52_0>=70 && LA52_0<=73)) ) {
+                alt52=1;
+            }
+            switch (alt52) {
+                case 1 :
+                    // InternalHenshin_text.g:3006:4: (lv_kind_0_0= ruleParameterKindRule )
+                    {
+                    // InternalHenshin_text.g:3006:4: (lv_kind_0_0= ruleParameterKindRule )
+                    // InternalHenshin_text.g:3007:5: lv_kind_0_0= ruleParameterKindRule
+                    {
+
+                    					newCompositeNode(grammarAccess.getParameterAccess().getKindParameterKindRuleEnumRuleCall_0_0());
+                    				
+                    pushFollow(FOLLOW_5);
+                    lv_kind_0_0=ruleParameterKindRule();
+
+                    state._fsp--;
+
+
+                    					if (current==null) {
+                    						current = createModelElementForParent(grammarAccess.getParameterRule());
+                    					}
+                    					set(
+                    						current,
+                    						"kind",
+                    						lv_kind_0_0,
+                    						"org.eclipse.emf.henshin.text.Henshin_text.ParameterKindRule");
+                    					afterParserOrEnumRuleCall();
+                    				
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalHenshin_text.g:3024:3: ( (lv_name_1_0= RULE_ID ) )
+            // InternalHenshin_text.g:3025:4: (lv_name_1_0= RULE_ID )
+            {
+            // InternalHenshin_text.g:3025:4: (lv_name_1_0= RULE_ID )
+            // InternalHenshin_text.g:3026:5: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_23); 
+
+            					newLeafNode(lv_name_1_0, grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_1_0());
             				
 
             					if (current==null) {
@@ -7951,7 +7999,7 @@
             					setWithLastConsumed(
             						current,
             						"name",
-            						lv_name_0_0,
+            						lv_name_1_0,
             						"org.eclipse.xtext.common.Terminals.ID");
             				
 
@@ -7960,21 +8008,21 @@
 
             }
 
-            otherlv_1=(Token)match(input,36,FOLLOW_40); 
+            otherlv_2=(Token)match(input,36,FOLLOW_42); 
 
-            			newLeafNode(otherlv_1, grammarAccess.getParameterAccess().getColonKeyword_1());
+            			newLeafNode(otherlv_2, grammarAccess.getParameterAccess().getColonKeyword_2());
             		
-            // InternalHenshin_text.g:3027:3: ( (lv_type_2_0= ruleParameterType ) )
-            // InternalHenshin_text.g:3028:4: (lv_type_2_0= ruleParameterType )
+            // InternalHenshin_text.g:3046:3: ( (lv_type_3_0= ruleParameterType ) )
+            // InternalHenshin_text.g:3047:4: (lv_type_3_0= ruleParameterType )
             {
-            // InternalHenshin_text.g:3028:4: (lv_type_2_0= ruleParameterType )
-            // InternalHenshin_text.g:3029:5: lv_type_2_0= ruleParameterType
+            // InternalHenshin_text.g:3047:4: (lv_type_3_0= ruleParameterType )
+            // InternalHenshin_text.g:3048:5: lv_type_3_0= ruleParameterType
             {
 
-            					newCompositeNode(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_2_0());
+            					newCompositeNode(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_3_0());
             				
             pushFollow(FOLLOW_2);
-            lv_type_2_0=ruleParameterType();
+            lv_type_3_0=ruleParameterType();
 
             state._fsp--;
 
@@ -7985,7 +8033,7 @@
             					set(
             						current,
             						"type",
-            						lv_type_2_0,
+            						lv_type_3_0,
             						"org.eclipse.emf.henshin.text.Henshin_text.ParameterType");
             					afterParserOrEnumRuleCall();
             				
@@ -8018,7 +8066,7 @@
 
 
     // $ANTLR start "entryRuleParameterType"
-    // InternalHenshin_text.g:3050:1: entryRuleParameterType returns [EObject current=null] : iv_ruleParameterType= ruleParameterType EOF ;
+    // InternalHenshin_text.g:3069:1: entryRuleParameterType returns [EObject current=null] : iv_ruleParameterType= ruleParameterType EOF ;
     public final EObject entryRuleParameterType() throws RecognitionException {
         EObject current = null;
 
@@ -8026,8 +8074,8 @@
 
 
         try {
-            // InternalHenshin_text.g:3050:54: (iv_ruleParameterType= ruleParameterType EOF )
-            // InternalHenshin_text.g:3051:2: iv_ruleParameterType= ruleParameterType EOF
+            // InternalHenshin_text.g:3069:54: (iv_ruleParameterType= ruleParameterType EOF )
+            // InternalHenshin_text.g:3070:2: iv_ruleParameterType= ruleParameterType EOF
             {
              newCompositeNode(grammarAccess.getParameterTypeRule()); 
             pushFollow(FOLLOW_1);
@@ -8054,7 +8102,7 @@
 
 
     // $ANTLR start "ruleParameterType"
-    // InternalHenshin_text.g:3057:1: ruleParameterType returns [EObject current=null] : ( ( (lv_enumType_0_0= ruleType ) ) | ( ( ruleEString ) ) ) ;
+    // InternalHenshin_text.g:3076:1: ruleParameterType returns [EObject current=null] : ( ( (lv_enumType_0_0= ruleType ) ) | ( ( ruleEString ) ) ) ;
     public final EObject ruleParameterType() throws RecognitionException {
         EObject current = null;
 
@@ -8065,34 +8113,34 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3063:2: ( ( ( (lv_enumType_0_0= ruleType ) ) | ( ( ruleEString ) ) ) )
-            // InternalHenshin_text.g:3064:2: ( ( (lv_enumType_0_0= ruleType ) ) | ( ( ruleEString ) ) )
+            // InternalHenshin_text.g:3082:2: ( ( ( (lv_enumType_0_0= ruleType ) ) | ( ( ruleEString ) ) ) )
+            // InternalHenshin_text.g:3083:2: ( ( (lv_enumType_0_0= ruleType ) ) | ( ( ruleEString ) ) )
             {
-            // InternalHenshin_text.g:3064:2: ( ( (lv_enumType_0_0= ruleType ) ) | ( ( ruleEString ) ) )
-            int alt52=2;
-            int LA52_0 = input.LA(1);
+            // InternalHenshin_text.g:3083:2: ( ( (lv_enumType_0_0= ruleType ) ) | ( ( ruleEString ) ) )
+            int alt53=2;
+            int LA53_0 = input.LA(1);
 
-            if ( ((LA52_0>=70 && LA52_0<=102)) ) {
-                alt52=1;
+            if ( ((LA53_0>=74 && LA53_0<=106)) ) {
+                alt53=1;
             }
-            else if ( (LA52_0==RULE_ID) ) {
-                alt52=2;
+            else if ( (LA53_0==RULE_ID) ) {
+                alt53=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 52, 0, input);
+                    new NoViableAltException("", 53, 0, input);
 
                 throw nvae;
             }
-            switch (alt52) {
+            switch (alt53) {
                 case 1 :
-                    // InternalHenshin_text.g:3065:3: ( (lv_enumType_0_0= ruleType ) )
+                    // InternalHenshin_text.g:3084:3: ( (lv_enumType_0_0= ruleType ) )
                     {
-                    // InternalHenshin_text.g:3065:3: ( (lv_enumType_0_0= ruleType ) )
-                    // InternalHenshin_text.g:3066:4: (lv_enumType_0_0= ruleType )
+                    // InternalHenshin_text.g:3084:3: ( (lv_enumType_0_0= ruleType ) )
+                    // InternalHenshin_text.g:3085:4: (lv_enumType_0_0= ruleType )
                     {
-                    // InternalHenshin_text.g:3066:4: (lv_enumType_0_0= ruleType )
-                    // InternalHenshin_text.g:3067:5: lv_enumType_0_0= ruleType
+                    // InternalHenshin_text.g:3085:4: (lv_enumType_0_0= ruleType )
+                    // InternalHenshin_text.g:3086:5: lv_enumType_0_0= ruleType
                     {
 
                     					newCompositeNode(grammarAccess.getParameterTypeAccess().getEnumTypeTypeEnumRuleCall_0_0());
@@ -8123,13 +8171,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:3085:3: ( ( ruleEString ) )
+                    // InternalHenshin_text.g:3104:3: ( ( ruleEString ) )
                     {
-                    // InternalHenshin_text.g:3085:3: ( ( ruleEString ) )
-                    // InternalHenshin_text.g:3086:4: ( ruleEString )
+                    // InternalHenshin_text.g:3104:3: ( ( ruleEString ) )
+                    // InternalHenshin_text.g:3105:4: ( ruleEString )
                     {
-                    // InternalHenshin_text.g:3086:4: ( ruleEString )
-                    // InternalHenshin_text.g:3087:5: ruleEString
+                    // InternalHenshin_text.g:3105:4: ( ruleEString )
+                    // InternalHenshin_text.g:3106:5: ruleEString
                     {
 
                     					if (current==null) {
@@ -8179,7 +8227,7 @@
 
 
     // $ANTLR start "entryRuleEBoolean"
-    // InternalHenshin_text.g:3105:1: entryRuleEBoolean returns [String current=null] : iv_ruleEBoolean= ruleEBoolean EOF ;
+    // InternalHenshin_text.g:3124:1: entryRuleEBoolean returns [String current=null] : iv_ruleEBoolean= ruleEBoolean EOF ;
     public final String entryRuleEBoolean() throws RecognitionException {
         String current = null;
 
@@ -8187,8 +8235,8 @@
 
 
         try {
-            // InternalHenshin_text.g:3105:48: (iv_ruleEBoolean= ruleEBoolean EOF )
-            // InternalHenshin_text.g:3106:2: iv_ruleEBoolean= ruleEBoolean EOF
+            // InternalHenshin_text.g:3124:48: (iv_ruleEBoolean= ruleEBoolean EOF )
+            // InternalHenshin_text.g:3125:2: iv_ruleEBoolean= ruleEBoolean EOF
             {
              newCompositeNode(grammarAccess.getEBooleanRule()); 
             pushFollow(FOLLOW_1);
@@ -8215,7 +8263,7 @@
 
 
     // $ANTLR start "ruleEBoolean"
-    // InternalHenshin_text.g:3112:1: ruleEBoolean returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'true' | kw= 'false' ) ;
+    // InternalHenshin_text.g:3131:1: ruleEBoolean returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'true' | kw= 'false' ) ;
     public final AntlrDatatypeRuleToken ruleEBoolean() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -8225,28 +8273,28 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3118:2: ( (kw= 'true' | kw= 'false' ) )
-            // InternalHenshin_text.g:3119:2: (kw= 'true' | kw= 'false' )
+            // InternalHenshin_text.g:3137:2: ( (kw= 'true' | kw= 'false' ) )
+            // InternalHenshin_text.g:3138:2: (kw= 'true' | kw= 'false' )
             {
-            // InternalHenshin_text.g:3119:2: (kw= 'true' | kw= 'false' )
-            int alt53=2;
-            int LA53_0 = input.LA(1);
+            // InternalHenshin_text.g:3138:2: (kw= 'true' | kw= 'false' )
+            int alt54=2;
+            int LA54_0 = input.LA(1);
 
-            if ( (LA53_0==58) ) {
-                alt53=1;
+            if ( (LA54_0==58) ) {
+                alt54=1;
             }
-            else if ( (LA53_0==59) ) {
-                alt53=2;
+            else if ( (LA54_0==59) ) {
+                alt54=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 53, 0, input);
+                    new NoViableAltException("", 54, 0, input);
 
                 throw nvae;
             }
-            switch (alt53) {
+            switch (alt54) {
                 case 1 :
-                    // InternalHenshin_text.g:3120:3: kw= 'true'
+                    // InternalHenshin_text.g:3139:3: kw= 'true'
                     {
                     kw=(Token)match(input,58,FOLLOW_2); 
 
@@ -8257,7 +8305,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:3126:3: kw= 'false'
+                    // InternalHenshin_text.g:3145:3: kw= 'false'
                     {
                     kw=(Token)match(input,59,FOLLOW_2); 
 
@@ -8290,7 +8338,7 @@
 
 
     // $ANTLR start "entryRuleExpression"
-    // InternalHenshin_text.g:3135:1: entryRuleExpression returns [EObject current=null] : iv_ruleExpression= ruleExpression EOF ;
+    // InternalHenshin_text.g:3154:1: entryRuleExpression returns [EObject current=null] : iv_ruleExpression= ruleExpression EOF ;
     public final EObject entryRuleExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8298,8 +8346,8 @@
 
 
         try {
-            // InternalHenshin_text.g:3135:51: (iv_ruleExpression= ruleExpression EOF )
-            // InternalHenshin_text.g:3136:2: iv_ruleExpression= ruleExpression EOF
+            // InternalHenshin_text.g:3154:51: (iv_ruleExpression= ruleExpression EOF )
+            // InternalHenshin_text.g:3155:2: iv_ruleExpression= ruleExpression EOF
             {
              newCompositeNode(grammarAccess.getExpressionRule()); 
             pushFollow(FOLLOW_1);
@@ -8326,7 +8374,7 @@
 
 
     // $ANTLR start "ruleExpression"
-    // InternalHenshin_text.g:3142:1: ruleExpression returns [EObject current=null] : this_OrExpression_0= ruleOrExpression ;
+    // InternalHenshin_text.g:3161:1: ruleExpression returns [EObject current=null] : this_OrExpression_0= ruleOrExpression ;
     public final EObject ruleExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8337,8 +8385,8 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3148:2: (this_OrExpression_0= ruleOrExpression )
-            // InternalHenshin_text.g:3149:2: this_OrExpression_0= ruleOrExpression
+            // InternalHenshin_text.g:3167:2: (this_OrExpression_0= ruleOrExpression )
+            // InternalHenshin_text.g:3168:2: this_OrExpression_0= ruleOrExpression
             {
 
             		newCompositeNode(grammarAccess.getExpressionAccess().getOrExpressionParserRuleCall());
@@ -8372,7 +8420,7 @@
 
 
     // $ANTLR start "entryRuleOrExpression"
-    // InternalHenshin_text.g:3160:1: entryRuleOrExpression returns [EObject current=null] : iv_ruleOrExpression= ruleOrExpression EOF ;
+    // InternalHenshin_text.g:3179:1: entryRuleOrExpression returns [EObject current=null] : iv_ruleOrExpression= ruleOrExpression EOF ;
     public final EObject entryRuleOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8380,8 +8428,8 @@
 
 
         try {
-            // InternalHenshin_text.g:3160:53: (iv_ruleOrExpression= ruleOrExpression EOF )
-            // InternalHenshin_text.g:3161:2: iv_ruleOrExpression= ruleOrExpression EOF
+            // InternalHenshin_text.g:3179:53: (iv_ruleOrExpression= ruleOrExpression EOF )
+            // InternalHenshin_text.g:3180:2: iv_ruleOrExpression= ruleOrExpression EOF
             {
              newCompositeNode(grammarAccess.getOrExpressionRule()); 
             pushFollow(FOLLOW_1);
@@ -8408,7 +8456,7 @@
 
 
     // $ANTLR start "ruleOrExpression"
-    // InternalHenshin_text.g:3167:1: ruleOrExpression returns [EObject current=null] : (this_AndExpression_0= ruleAndExpression ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )* ) ;
+    // InternalHenshin_text.g:3186:1: ruleOrExpression returns [EObject current=null] : (this_AndExpression_0= ruleAndExpression ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )* ) ;
     public final EObject ruleOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8422,16 +8470,16 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3173:2: ( (this_AndExpression_0= ruleAndExpression ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )* ) )
-            // InternalHenshin_text.g:3174:2: (this_AndExpression_0= ruleAndExpression ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )* )
+            // InternalHenshin_text.g:3192:2: ( (this_AndExpression_0= ruleAndExpression ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )* ) )
+            // InternalHenshin_text.g:3193:2: (this_AndExpression_0= ruleAndExpression ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )* )
             {
-            // InternalHenshin_text.g:3174:2: (this_AndExpression_0= ruleAndExpression ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )* )
-            // InternalHenshin_text.g:3175:3: this_AndExpression_0= ruleAndExpression ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )*
+            // InternalHenshin_text.g:3193:2: (this_AndExpression_0= ruleAndExpression ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )* )
+            // InternalHenshin_text.g:3194:3: this_AndExpression_0= ruleAndExpression ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )*
             {
 
             			newCompositeNode(grammarAccess.getOrExpressionAccess().getAndExpressionParserRuleCall_0());
             		
-            pushFollow(FOLLOW_41);
+            pushFollow(FOLLOW_43);
             this_AndExpression_0=ruleAndExpression();
 
             state._fsp--;
@@ -8440,23 +8488,23 @@
             			current = this_AndExpression_0;
             			afterParserOrEnumRuleCall();
             		
-            // InternalHenshin_text.g:3183:3: ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )*
-            loop54:
+            // InternalHenshin_text.g:3202:3: ( () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) ) )*
+            loop55:
             do {
-                int alt54=2;
-                int LA54_0 = input.LA(1);
+                int alt55=2;
+                int LA55_0 = input.LA(1);
 
-                if ( (LA54_0==44) ) {
-                    alt54=1;
+                if ( (LA55_0==44) ) {
+                    alt55=1;
                 }
 
 
-                switch (alt54) {
+                switch (alt55) {
             	case 1 :
-            	    // InternalHenshin_text.g:3184:4: () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) )
+            	    // InternalHenshin_text.g:3203:4: () otherlv_2= 'OR' ( (lv_right_3_0= ruleAndExpression ) )
             	    {
-            	    // InternalHenshin_text.g:3184:4: ()
-            	    // InternalHenshin_text.g:3185:5: 
+            	    // InternalHenshin_text.g:3203:4: ()
+            	    // InternalHenshin_text.g:3204:5: 
             	    {
 
             	    					current = forceCreateModelElementAndSet(
@@ -8466,20 +8514,20 @@
 
             	    }
 
-            	    otherlv_2=(Token)match(input,44,FOLLOW_17); 
+            	    otherlv_2=(Token)match(input,44,FOLLOW_18); 
 
             	    				newLeafNode(otherlv_2, grammarAccess.getOrExpressionAccess().getORKeyword_1_1());
             	    			
-            	    // InternalHenshin_text.g:3195:4: ( (lv_right_3_0= ruleAndExpression ) )
-            	    // InternalHenshin_text.g:3196:5: (lv_right_3_0= ruleAndExpression )
+            	    // InternalHenshin_text.g:3214:4: ( (lv_right_3_0= ruleAndExpression ) )
+            	    // InternalHenshin_text.g:3215:5: (lv_right_3_0= ruleAndExpression )
             	    {
-            	    // InternalHenshin_text.g:3196:5: (lv_right_3_0= ruleAndExpression )
-            	    // InternalHenshin_text.g:3197:6: lv_right_3_0= ruleAndExpression
+            	    // InternalHenshin_text.g:3215:5: (lv_right_3_0= ruleAndExpression )
+            	    // InternalHenshin_text.g:3216:6: lv_right_3_0= ruleAndExpression
             	    {
 
             	    						newCompositeNode(grammarAccess.getOrExpressionAccess().getRightAndExpressionParserRuleCall_1_2_0());
             	    					
-            	    pushFollow(FOLLOW_41);
+            	    pushFollow(FOLLOW_43);
             	    lv_right_3_0=ruleAndExpression();
 
             	    state._fsp--;
@@ -8506,167 +8554,6 @@
             	    break;
 
             	default :
-            	    break loop54;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-
-            	leaveRule();
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOrExpression"
-
-
-    // $ANTLR start "entryRuleAndExpression"
-    // InternalHenshin_text.g:3219:1: entryRuleAndExpression returns [EObject current=null] : iv_ruleAndExpression= ruleAndExpression EOF ;
-    public final EObject entryRuleAndExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleAndExpression = null;
-
-
-        try {
-            // InternalHenshin_text.g:3219:54: (iv_ruleAndExpression= ruleAndExpression EOF )
-            // InternalHenshin_text.g:3220:2: iv_ruleAndExpression= ruleAndExpression EOF
-            {
-             newCompositeNode(grammarAccess.getAndExpressionRule()); 
-            pushFollow(FOLLOW_1);
-            iv_ruleAndExpression=ruleAndExpression();
-
-            state._fsp--;
-
-             current =iv_ruleAndExpression; 
-            match(input,EOF,FOLLOW_2); 
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleAndExpression"
-
-
-    // $ANTLR start "ruleAndExpression"
-    // InternalHenshin_text.g:3226:1: ruleAndExpression returns [EObject current=null] : (this_EqualityExpression_0= ruleEqualityExpression ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )* ) ;
-    public final EObject ruleAndExpression() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_2=null;
-        EObject this_EqualityExpression_0 = null;
-
-        EObject lv_right_3_0 = null;
-
-
-
-        	enterRule();
-
-        try {
-            // InternalHenshin_text.g:3232:2: ( (this_EqualityExpression_0= ruleEqualityExpression ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )* ) )
-            // InternalHenshin_text.g:3233:2: (this_EqualityExpression_0= ruleEqualityExpression ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )* )
-            {
-            // InternalHenshin_text.g:3233:2: (this_EqualityExpression_0= ruleEqualityExpression ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )* )
-            // InternalHenshin_text.g:3234:3: this_EqualityExpression_0= ruleEqualityExpression ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )*
-            {
-
-            			newCompositeNode(grammarAccess.getAndExpressionAccess().getEqualityExpressionParserRuleCall_0());
-            		
-            pushFollow(FOLLOW_33);
-            this_EqualityExpression_0=ruleEqualityExpression();
-
-            state._fsp--;
-
-
-            			current = this_EqualityExpression_0;
-            			afterParserOrEnumRuleCall();
-            		
-            // InternalHenshin_text.g:3242:3: ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )*
-            loop55:
-            do {
-                int alt55=2;
-                int LA55_0 = input.LA(1);
-
-                if ( (LA55_0==46) ) {
-                    alt55=1;
-                }
-
-
-                switch (alt55) {
-            	case 1 :
-            	    // InternalHenshin_text.g:3243:4: () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) )
-            	    {
-            	    // InternalHenshin_text.g:3243:4: ()
-            	    // InternalHenshin_text.g:3244:5: 
-            	    {
-
-            	    					current = forceCreateModelElementAndSet(
-            	    						grammarAccess.getAndExpressionAccess().getAndExpressionLeftAction_1_0(),
-            	    						current);
-            	    				
-
-            	    }
-
-            	    otherlv_2=(Token)match(input,46,FOLLOW_17); 
-
-            	    				newLeafNode(otherlv_2, grammarAccess.getAndExpressionAccess().getANDKeyword_1_1());
-            	    			
-            	    // InternalHenshin_text.g:3254:4: ( (lv_right_3_0= ruleEqualityExpression ) )
-            	    // InternalHenshin_text.g:3255:5: (lv_right_3_0= ruleEqualityExpression )
-            	    {
-            	    // InternalHenshin_text.g:3255:5: (lv_right_3_0= ruleEqualityExpression )
-            	    // InternalHenshin_text.g:3256:6: lv_right_3_0= ruleEqualityExpression
-            	    {
-
-            	    						newCompositeNode(grammarAccess.getAndExpressionAccess().getRightEqualityExpressionParserRuleCall_1_2_0());
-            	    					
-            	    pushFollow(FOLLOW_33);
-            	    lv_right_3_0=ruleEqualityExpression();
-
-            	    state._fsp--;
-
-
-            	    						if (current==null) {
-            	    							current = createModelElementForParent(grammarAccess.getAndExpressionRule());
-            	    						}
-            	    						set(
-            	    							current,
-            	    							"right",
-            	    							lv_right_3_0,
-            	    							"org.eclipse.emf.henshin.text.Henshin_text.EqualityExpression");
-            	    						afterParserOrEnumRuleCall();
-            	    					
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
             	    break loop55;
                 }
             } while (true);
@@ -8690,11 +8577,172 @@
         }
         return current;
     }
+    // $ANTLR end "ruleOrExpression"
+
+
+    // $ANTLR start "entryRuleAndExpression"
+    // InternalHenshin_text.g:3238:1: entryRuleAndExpression returns [EObject current=null] : iv_ruleAndExpression= ruleAndExpression EOF ;
+    public final EObject entryRuleAndExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleAndExpression = null;
+
+
+        try {
+            // InternalHenshin_text.g:3238:54: (iv_ruleAndExpression= ruleAndExpression EOF )
+            // InternalHenshin_text.g:3239:2: iv_ruleAndExpression= ruleAndExpression EOF
+            {
+             newCompositeNode(grammarAccess.getAndExpressionRule()); 
+            pushFollow(FOLLOW_1);
+            iv_ruleAndExpression=ruleAndExpression();
+
+            state._fsp--;
+
+             current =iv_ruleAndExpression; 
+            match(input,EOF,FOLLOW_2); 
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleAndExpression"
+
+
+    // $ANTLR start "ruleAndExpression"
+    // InternalHenshin_text.g:3245:1: ruleAndExpression returns [EObject current=null] : (this_EqualityExpression_0= ruleEqualityExpression ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )* ) ;
+    public final EObject ruleAndExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject this_EqualityExpression_0 = null;
+
+        EObject lv_right_3_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalHenshin_text.g:3251:2: ( (this_EqualityExpression_0= ruleEqualityExpression ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )* ) )
+            // InternalHenshin_text.g:3252:2: (this_EqualityExpression_0= ruleEqualityExpression ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )* )
+            {
+            // InternalHenshin_text.g:3252:2: (this_EqualityExpression_0= ruleEqualityExpression ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )* )
+            // InternalHenshin_text.g:3253:3: this_EqualityExpression_0= ruleEqualityExpression ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )*
+            {
+
+            			newCompositeNode(grammarAccess.getAndExpressionAccess().getEqualityExpressionParserRuleCall_0());
+            		
+            pushFollow(FOLLOW_34);
+            this_EqualityExpression_0=ruleEqualityExpression();
+
+            state._fsp--;
+
+
+            			current = this_EqualityExpression_0;
+            			afterParserOrEnumRuleCall();
+            		
+            // InternalHenshin_text.g:3261:3: ( () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) ) )*
+            loop56:
+            do {
+                int alt56=2;
+                int LA56_0 = input.LA(1);
+
+                if ( (LA56_0==46) ) {
+                    alt56=1;
+                }
+
+
+                switch (alt56) {
+            	case 1 :
+            	    // InternalHenshin_text.g:3262:4: () otherlv_2= 'AND' ( (lv_right_3_0= ruleEqualityExpression ) )
+            	    {
+            	    // InternalHenshin_text.g:3262:4: ()
+            	    // InternalHenshin_text.g:3263:5: 
+            	    {
+
+            	    					current = forceCreateModelElementAndSet(
+            	    						grammarAccess.getAndExpressionAccess().getAndExpressionLeftAction_1_0(),
+            	    						current);
+            	    				
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,46,FOLLOW_18); 
+
+            	    				newLeafNode(otherlv_2, grammarAccess.getAndExpressionAccess().getANDKeyword_1_1());
+            	    			
+            	    // InternalHenshin_text.g:3273:4: ( (lv_right_3_0= ruleEqualityExpression ) )
+            	    // InternalHenshin_text.g:3274:5: (lv_right_3_0= ruleEqualityExpression )
+            	    {
+            	    // InternalHenshin_text.g:3274:5: (lv_right_3_0= ruleEqualityExpression )
+            	    // InternalHenshin_text.g:3275:6: lv_right_3_0= ruleEqualityExpression
+            	    {
+
+            	    						newCompositeNode(grammarAccess.getAndExpressionAccess().getRightEqualityExpressionParserRuleCall_1_2_0());
+            	    					
+            	    pushFollow(FOLLOW_34);
+            	    lv_right_3_0=ruleEqualityExpression();
+
+            	    state._fsp--;
+
+
+            	    						if (current==null) {
+            	    							current = createModelElementForParent(grammarAccess.getAndExpressionRule());
+            	    						}
+            	    						set(
+            	    							current,
+            	    							"right",
+            	    							lv_right_3_0,
+            	    							"org.eclipse.emf.henshin.text.Henshin_text.EqualityExpression");
+            	    						afterParserOrEnumRuleCall();
+            	    					
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop56;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+
+            	leaveRule();
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
     // $ANTLR end "ruleAndExpression"
 
 
     // $ANTLR start "entryRuleEqualityExpression"
-    // InternalHenshin_text.g:3278:1: entryRuleEqualityExpression returns [EObject current=null] : iv_ruleEqualityExpression= ruleEqualityExpression EOF ;
+    // InternalHenshin_text.g:3297:1: entryRuleEqualityExpression returns [EObject current=null] : iv_ruleEqualityExpression= ruleEqualityExpression EOF ;
     public final EObject entryRuleEqualityExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8702,8 +8750,8 @@
 
 
         try {
-            // InternalHenshin_text.g:3278:59: (iv_ruleEqualityExpression= ruleEqualityExpression EOF )
-            // InternalHenshin_text.g:3279:2: iv_ruleEqualityExpression= ruleEqualityExpression EOF
+            // InternalHenshin_text.g:3297:59: (iv_ruleEqualityExpression= ruleEqualityExpression EOF )
+            // InternalHenshin_text.g:3298:2: iv_ruleEqualityExpression= ruleEqualityExpression EOF
             {
              newCompositeNode(grammarAccess.getEqualityExpressionRule()); 
             pushFollow(FOLLOW_1);
@@ -8730,7 +8778,7 @@
 
 
     // $ANTLR start "ruleEqualityExpression"
-    // InternalHenshin_text.g:3285:1: ruleEqualityExpression returns [EObject current=null] : (this_ComparisonExpression_0= ruleComparisonExpression ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )* ) ;
+    // InternalHenshin_text.g:3304:1: ruleEqualityExpression returns [EObject current=null] : (this_ComparisonExpression_0= ruleComparisonExpression ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )* ) ;
     public final EObject ruleEqualityExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8745,16 +8793,16 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3291:2: ( (this_ComparisonExpression_0= ruleComparisonExpression ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )* ) )
-            // InternalHenshin_text.g:3292:2: (this_ComparisonExpression_0= ruleComparisonExpression ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )* )
+            // InternalHenshin_text.g:3310:2: ( (this_ComparisonExpression_0= ruleComparisonExpression ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )* ) )
+            // InternalHenshin_text.g:3311:2: (this_ComparisonExpression_0= ruleComparisonExpression ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )* )
             {
-            // InternalHenshin_text.g:3292:2: (this_ComparisonExpression_0= ruleComparisonExpression ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )* )
-            // InternalHenshin_text.g:3293:3: this_ComparisonExpression_0= ruleComparisonExpression ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )*
+            // InternalHenshin_text.g:3311:2: (this_ComparisonExpression_0= ruleComparisonExpression ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )* )
+            // InternalHenshin_text.g:3312:3: this_ComparisonExpression_0= ruleComparisonExpression ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )*
             {
 
             			newCompositeNode(grammarAccess.getEqualityExpressionAccess().getComparisonExpressionParserRuleCall_0());
             		
-            pushFollow(FOLLOW_42);
+            pushFollow(FOLLOW_44);
             this_ComparisonExpression_0=ruleComparisonExpression();
 
             state._fsp--;
@@ -8763,23 +8811,23 @@
             			current = this_ComparisonExpression_0;
             			afterParserOrEnumRuleCall();
             		
-            // InternalHenshin_text.g:3301:3: ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )*
-            loop57:
+            // InternalHenshin_text.g:3320:3: ( () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) ) )*
+            loop58:
             do {
-                int alt57=2;
-                int LA57_0 = input.LA(1);
+                int alt58=2;
+                int LA58_0 = input.LA(1);
 
-                if ( ((LA57_0>=60 && LA57_0<=61)) ) {
-                    alt57=1;
+                if ( ((LA58_0>=60 && LA58_0<=61)) ) {
+                    alt58=1;
                 }
 
 
-                switch (alt57) {
+                switch (alt58) {
             	case 1 :
-            	    // InternalHenshin_text.g:3302:4: () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) )
+            	    // InternalHenshin_text.g:3321:4: () ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) ) ( (lv_right_3_0= ruleComparisonExpression ) )
             	    {
-            	    // InternalHenshin_text.g:3302:4: ()
-            	    // InternalHenshin_text.g:3303:5: 
+            	    // InternalHenshin_text.g:3321:4: ()
+            	    // InternalHenshin_text.g:3322:5: 
             	    {
 
             	    					current = forceCreateModelElementAndSet(
@@ -8789,33 +8837,33 @@
 
             	    }
 
-            	    // InternalHenshin_text.g:3309:4: ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) )
-            	    // InternalHenshin_text.g:3310:5: ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) )
+            	    // InternalHenshin_text.g:3328:4: ( ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) ) )
+            	    // InternalHenshin_text.g:3329:5: ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) )
             	    {
-            	    // InternalHenshin_text.g:3310:5: ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) )
-            	    // InternalHenshin_text.g:3311:6: (lv_op_2_1= '==' | lv_op_2_2= '!=' )
+            	    // InternalHenshin_text.g:3329:5: ( (lv_op_2_1= '==' | lv_op_2_2= '!=' ) )
+            	    // InternalHenshin_text.g:3330:6: (lv_op_2_1= '==' | lv_op_2_2= '!=' )
             	    {
-            	    // InternalHenshin_text.g:3311:6: (lv_op_2_1= '==' | lv_op_2_2= '!=' )
-            	    int alt56=2;
-            	    int LA56_0 = input.LA(1);
+            	    // InternalHenshin_text.g:3330:6: (lv_op_2_1= '==' | lv_op_2_2= '!=' )
+            	    int alt57=2;
+            	    int LA57_0 = input.LA(1);
 
-            	    if ( (LA56_0==60) ) {
-            	        alt56=1;
+            	    if ( (LA57_0==60) ) {
+            	        alt57=1;
             	    }
-            	    else if ( (LA56_0==61) ) {
-            	        alt56=2;
+            	    else if ( (LA57_0==61) ) {
+            	        alt57=2;
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 56, 0, input);
+            	            new NoViableAltException("", 57, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt56) {
+            	    switch (alt57) {
             	        case 1 :
-            	            // InternalHenshin_text.g:3312:7: lv_op_2_1= '=='
+            	            // InternalHenshin_text.g:3331:7: lv_op_2_1= '=='
             	            {
-            	            lv_op_2_1=(Token)match(input,60,FOLLOW_17); 
+            	            lv_op_2_1=(Token)match(input,60,FOLLOW_18); 
 
             	            							newLeafNode(lv_op_2_1, grammarAccess.getEqualityExpressionAccess().getOpEqualsSignEqualsSignKeyword_1_1_0_0());
             	            						
@@ -8829,9 +8877,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalHenshin_text.g:3323:7: lv_op_2_2= '!='
+            	            // InternalHenshin_text.g:3342:7: lv_op_2_2= '!='
             	            {
-            	            lv_op_2_2=(Token)match(input,61,FOLLOW_17); 
+            	            lv_op_2_2=(Token)match(input,61,FOLLOW_18); 
 
             	            							newLeafNode(lv_op_2_2, grammarAccess.getEqualityExpressionAccess().getOpExclamationMarkEqualsSignKeyword_1_1_0_1());
             	            						
@@ -8853,16 +8901,16 @@
 
             	    }
 
-            	    // InternalHenshin_text.g:3336:4: ( (lv_right_3_0= ruleComparisonExpression ) )
-            	    // InternalHenshin_text.g:3337:5: (lv_right_3_0= ruleComparisonExpression )
+            	    // InternalHenshin_text.g:3355:4: ( (lv_right_3_0= ruleComparisonExpression ) )
+            	    // InternalHenshin_text.g:3356:5: (lv_right_3_0= ruleComparisonExpression )
             	    {
-            	    // InternalHenshin_text.g:3337:5: (lv_right_3_0= ruleComparisonExpression )
-            	    // InternalHenshin_text.g:3338:6: lv_right_3_0= ruleComparisonExpression
+            	    // InternalHenshin_text.g:3356:5: (lv_right_3_0= ruleComparisonExpression )
+            	    // InternalHenshin_text.g:3357:6: lv_right_3_0= ruleComparisonExpression
             	    {
 
             	    						newCompositeNode(grammarAccess.getEqualityExpressionAccess().getRightComparisonExpressionParserRuleCall_1_2_0());
             	    					
-            	    pushFollow(FOLLOW_42);
+            	    pushFollow(FOLLOW_44);
             	    lv_right_3_0=ruleComparisonExpression();
 
             	    state._fsp--;
@@ -8889,7 +8937,7 @@
             	    break;
 
             	default :
-            	    break loop57;
+            	    break loop58;
                 }
             } while (true);
 
@@ -8916,7 +8964,7 @@
 
 
     // $ANTLR start "entryRuleComparisonExpression"
-    // InternalHenshin_text.g:3360:1: entryRuleComparisonExpression returns [EObject current=null] : iv_ruleComparisonExpression= ruleComparisonExpression EOF ;
+    // InternalHenshin_text.g:3379:1: entryRuleComparisonExpression returns [EObject current=null] : iv_ruleComparisonExpression= ruleComparisonExpression EOF ;
     public final EObject entryRuleComparisonExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8924,8 +8972,8 @@
 
 
         try {
-            // InternalHenshin_text.g:3360:61: (iv_ruleComparisonExpression= ruleComparisonExpression EOF )
-            // InternalHenshin_text.g:3361:2: iv_ruleComparisonExpression= ruleComparisonExpression EOF
+            // InternalHenshin_text.g:3379:61: (iv_ruleComparisonExpression= ruleComparisonExpression EOF )
+            // InternalHenshin_text.g:3380:2: iv_ruleComparisonExpression= ruleComparisonExpression EOF
             {
              newCompositeNode(grammarAccess.getComparisonExpressionRule()); 
             pushFollow(FOLLOW_1);
@@ -8952,7 +9000,7 @@
 
 
     // $ANTLR start "ruleComparisonExpression"
-    // InternalHenshin_text.g:3367:1: ruleComparisonExpression returns [EObject current=null] : (this_PlusOrMinusExpression_0= rulePlusOrMinusExpression ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )* ) ;
+    // InternalHenshin_text.g:3386:1: ruleComparisonExpression returns [EObject current=null] : (this_PlusOrMinusExpression_0= rulePlusOrMinusExpression ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )* ) ;
     public final EObject ruleComparisonExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8969,16 +9017,16 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3373:2: ( (this_PlusOrMinusExpression_0= rulePlusOrMinusExpression ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )* ) )
-            // InternalHenshin_text.g:3374:2: (this_PlusOrMinusExpression_0= rulePlusOrMinusExpression ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )* )
+            // InternalHenshin_text.g:3392:2: ( (this_PlusOrMinusExpression_0= rulePlusOrMinusExpression ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )* ) )
+            // InternalHenshin_text.g:3393:2: (this_PlusOrMinusExpression_0= rulePlusOrMinusExpression ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )* )
             {
-            // InternalHenshin_text.g:3374:2: (this_PlusOrMinusExpression_0= rulePlusOrMinusExpression ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )* )
-            // InternalHenshin_text.g:3375:3: this_PlusOrMinusExpression_0= rulePlusOrMinusExpression ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )*
+            // InternalHenshin_text.g:3393:2: (this_PlusOrMinusExpression_0= rulePlusOrMinusExpression ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )* )
+            // InternalHenshin_text.g:3394:3: this_PlusOrMinusExpression_0= rulePlusOrMinusExpression ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )*
             {
 
             			newCompositeNode(grammarAccess.getComparisonExpressionAccess().getPlusOrMinusExpressionParserRuleCall_0());
             		
-            pushFollow(FOLLOW_43);
+            pushFollow(FOLLOW_45);
             this_PlusOrMinusExpression_0=rulePlusOrMinusExpression();
 
             state._fsp--;
@@ -8987,23 +9035,23 @@
             			current = this_PlusOrMinusExpression_0;
             			afterParserOrEnumRuleCall();
             		
-            // InternalHenshin_text.g:3383:3: ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )*
-            loop59:
+            // InternalHenshin_text.g:3402:3: ( () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) ) )*
+            loop60:
             do {
-                int alt59=2;
-                int LA59_0 = input.LA(1);
+                int alt60=2;
+                int LA60_0 = input.LA(1);
 
-                if ( ((LA59_0>=62 && LA59_0<=65)) ) {
-                    alt59=1;
+                if ( ((LA60_0>=62 && LA60_0<=65)) ) {
+                    alt60=1;
                 }
 
 
-                switch (alt59) {
+                switch (alt60) {
             	case 1 :
-            	    // InternalHenshin_text.g:3384:4: () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) )
+            	    // InternalHenshin_text.g:3403:4: () ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) ) ( (lv_right_3_0= rulePlusOrMinusExpression ) )
             	    {
-            	    // InternalHenshin_text.g:3384:4: ()
-            	    // InternalHenshin_text.g:3385:5: 
+            	    // InternalHenshin_text.g:3403:4: ()
+            	    // InternalHenshin_text.g:3404:5: 
             	    {
 
             	    					current = forceCreateModelElementAndSet(
@@ -9013,47 +9061,47 @@
 
             	    }
 
-            	    // InternalHenshin_text.g:3391:4: ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) )
-            	    // InternalHenshin_text.g:3392:5: ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) )
+            	    // InternalHenshin_text.g:3410:4: ( ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) ) )
+            	    // InternalHenshin_text.g:3411:5: ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) )
             	    {
-            	    // InternalHenshin_text.g:3392:5: ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) )
-            	    // InternalHenshin_text.g:3393:6: (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' )
+            	    // InternalHenshin_text.g:3411:5: ( (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' ) )
+            	    // InternalHenshin_text.g:3412:6: (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' )
             	    {
-            	    // InternalHenshin_text.g:3393:6: (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' )
-            	    int alt58=4;
+            	    // InternalHenshin_text.g:3412:6: (lv_op_2_1= '>=' | lv_op_2_2= '<=' | lv_op_2_3= '>' | lv_op_2_4= '<' )
+            	    int alt59=4;
             	    switch ( input.LA(1) ) {
             	    case 62:
             	        {
-            	        alt58=1;
+            	        alt59=1;
             	        }
             	        break;
             	    case 63:
             	        {
-            	        alt58=2;
+            	        alt59=2;
             	        }
             	        break;
             	    case 64:
             	        {
-            	        alt58=3;
+            	        alt59=3;
             	        }
             	        break;
             	    case 65:
             	        {
-            	        alt58=4;
+            	        alt59=4;
             	        }
             	        break;
             	    default:
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 58, 0, input);
+            	            new NoViableAltException("", 59, 0, input);
 
             	        throw nvae;
             	    }
 
-            	    switch (alt58) {
+            	    switch (alt59) {
             	        case 1 :
-            	            // InternalHenshin_text.g:3394:7: lv_op_2_1= '>='
+            	            // InternalHenshin_text.g:3413:7: lv_op_2_1= '>='
             	            {
-            	            lv_op_2_1=(Token)match(input,62,FOLLOW_17); 
+            	            lv_op_2_1=(Token)match(input,62,FOLLOW_18); 
 
             	            							newLeafNode(lv_op_2_1, grammarAccess.getComparisonExpressionAccess().getOpGreaterThanSignEqualsSignKeyword_1_1_0_0());
             	            						
@@ -9067,9 +9115,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalHenshin_text.g:3405:7: lv_op_2_2= '<='
+            	            // InternalHenshin_text.g:3424:7: lv_op_2_2= '<='
             	            {
-            	            lv_op_2_2=(Token)match(input,63,FOLLOW_17); 
+            	            lv_op_2_2=(Token)match(input,63,FOLLOW_18); 
 
             	            							newLeafNode(lv_op_2_2, grammarAccess.getComparisonExpressionAccess().getOpLessThanSignEqualsSignKeyword_1_1_0_1());
             	            						
@@ -9083,9 +9131,9 @@
             	            }
             	            break;
             	        case 3 :
-            	            // InternalHenshin_text.g:3416:7: lv_op_2_3= '>'
+            	            // InternalHenshin_text.g:3435:7: lv_op_2_3= '>'
             	            {
-            	            lv_op_2_3=(Token)match(input,64,FOLLOW_17); 
+            	            lv_op_2_3=(Token)match(input,64,FOLLOW_18); 
 
             	            							newLeafNode(lv_op_2_3, grammarAccess.getComparisonExpressionAccess().getOpGreaterThanSignKeyword_1_1_0_2());
             	            						
@@ -9099,9 +9147,9 @@
             	            }
             	            break;
             	        case 4 :
-            	            // InternalHenshin_text.g:3427:7: lv_op_2_4= '<'
+            	            // InternalHenshin_text.g:3446:7: lv_op_2_4= '<'
             	            {
-            	            lv_op_2_4=(Token)match(input,65,FOLLOW_17); 
+            	            lv_op_2_4=(Token)match(input,65,FOLLOW_18); 
 
             	            							newLeafNode(lv_op_2_4, grammarAccess.getComparisonExpressionAccess().getOpLessThanSignKeyword_1_1_0_3());
             	            						
@@ -9123,16 +9171,16 @@
 
             	    }
 
-            	    // InternalHenshin_text.g:3440:4: ( (lv_right_3_0= rulePlusOrMinusExpression ) )
-            	    // InternalHenshin_text.g:3441:5: (lv_right_3_0= rulePlusOrMinusExpression )
+            	    // InternalHenshin_text.g:3459:4: ( (lv_right_3_0= rulePlusOrMinusExpression ) )
+            	    // InternalHenshin_text.g:3460:5: (lv_right_3_0= rulePlusOrMinusExpression )
             	    {
-            	    // InternalHenshin_text.g:3441:5: (lv_right_3_0= rulePlusOrMinusExpression )
-            	    // InternalHenshin_text.g:3442:6: lv_right_3_0= rulePlusOrMinusExpression
+            	    // InternalHenshin_text.g:3460:5: (lv_right_3_0= rulePlusOrMinusExpression )
+            	    // InternalHenshin_text.g:3461:6: lv_right_3_0= rulePlusOrMinusExpression
             	    {
 
             	    						newCompositeNode(grammarAccess.getComparisonExpressionAccess().getRightPlusOrMinusExpressionParserRuleCall_1_2_0());
             	    					
-            	    pushFollow(FOLLOW_43);
+            	    pushFollow(FOLLOW_45);
             	    lv_right_3_0=rulePlusOrMinusExpression();
 
             	    state._fsp--;
@@ -9159,7 +9207,7 @@
             	    break;
 
             	default :
-            	    break loop59;
+            	    break loop60;
                 }
             } while (true);
 
@@ -9186,7 +9234,7 @@
 
 
     // $ANTLR start "entryRulePlusOrMinusExpression"
-    // InternalHenshin_text.g:3464:1: entryRulePlusOrMinusExpression returns [EObject current=null] : iv_rulePlusOrMinusExpression= rulePlusOrMinusExpression EOF ;
+    // InternalHenshin_text.g:3483:1: entryRulePlusOrMinusExpression returns [EObject current=null] : iv_rulePlusOrMinusExpression= rulePlusOrMinusExpression EOF ;
     public final EObject entryRulePlusOrMinusExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9194,8 +9242,8 @@
 
 
         try {
-            // InternalHenshin_text.g:3464:62: (iv_rulePlusOrMinusExpression= rulePlusOrMinusExpression EOF )
-            // InternalHenshin_text.g:3465:2: iv_rulePlusOrMinusExpression= rulePlusOrMinusExpression EOF
+            // InternalHenshin_text.g:3483:62: (iv_rulePlusOrMinusExpression= rulePlusOrMinusExpression EOF )
+            // InternalHenshin_text.g:3484:2: iv_rulePlusOrMinusExpression= rulePlusOrMinusExpression EOF
             {
              newCompositeNode(grammarAccess.getPlusOrMinusExpressionRule()); 
             pushFollow(FOLLOW_1);
@@ -9222,7 +9270,7 @@
 
 
     // $ANTLR start "rulePlusOrMinusExpression"
-    // InternalHenshin_text.g:3471:1: rulePlusOrMinusExpression returns [EObject current=null] : (this_MulOrDivExpression_0= ruleMulOrDivExpression ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )* ) ;
+    // InternalHenshin_text.g:3490:1: rulePlusOrMinusExpression returns [EObject current=null] : (this_MulOrDivExpression_0= ruleMulOrDivExpression ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )* ) ;
     public final EObject rulePlusOrMinusExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9237,16 +9285,16 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3477:2: ( (this_MulOrDivExpression_0= ruleMulOrDivExpression ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )* ) )
-            // InternalHenshin_text.g:3478:2: (this_MulOrDivExpression_0= ruleMulOrDivExpression ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )* )
+            // InternalHenshin_text.g:3496:2: ( (this_MulOrDivExpression_0= ruleMulOrDivExpression ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )* ) )
+            // InternalHenshin_text.g:3497:2: (this_MulOrDivExpression_0= ruleMulOrDivExpression ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )* )
             {
-            // InternalHenshin_text.g:3478:2: (this_MulOrDivExpression_0= ruleMulOrDivExpression ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )* )
-            // InternalHenshin_text.g:3479:3: this_MulOrDivExpression_0= ruleMulOrDivExpression ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )*
+            // InternalHenshin_text.g:3497:2: (this_MulOrDivExpression_0= ruleMulOrDivExpression ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )* )
+            // InternalHenshin_text.g:3498:3: this_MulOrDivExpression_0= ruleMulOrDivExpression ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )*
             {
 
             			newCompositeNode(grammarAccess.getPlusOrMinusExpressionAccess().getMulOrDivExpressionParserRuleCall_0());
             		
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_46);
             this_MulOrDivExpression_0=ruleMulOrDivExpression();
 
             state._fsp--;
@@ -9255,46 +9303,46 @@
             			current = this_MulOrDivExpression_0;
             			afterParserOrEnumRuleCall();
             		
-            // InternalHenshin_text.g:3487:3: ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )*
-            loop61:
+            // InternalHenshin_text.g:3506:3: ( ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) ) )*
+            loop62:
             do {
-                int alt61=2;
-                int LA61_0 = input.LA(1);
+                int alt62=2;
+                int LA62_0 = input.LA(1);
 
-                if ( ((LA61_0>=66 && LA61_0<=67)) ) {
-                    alt61=1;
+                if ( ((LA62_0>=66 && LA62_0<=67)) ) {
+                    alt62=1;
                 }
 
 
-                switch (alt61) {
+                switch (alt62) {
             	case 1 :
-            	    // InternalHenshin_text.g:3488:4: ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) )
+            	    // InternalHenshin_text.g:3507:4: ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) ) ( (lv_right_5_0= ruleMulOrDivExpression ) )
             	    {
-            	    // InternalHenshin_text.g:3488:4: ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) )
-            	    int alt60=2;
-            	    int LA60_0 = input.LA(1);
+            	    // InternalHenshin_text.g:3507:4: ( ( () otherlv_2= '+' ) | ( () otherlv_4= '-' ) )
+            	    int alt61=2;
+            	    int LA61_0 = input.LA(1);
 
-            	    if ( (LA60_0==66) ) {
-            	        alt60=1;
+            	    if ( (LA61_0==66) ) {
+            	        alt61=1;
             	    }
-            	    else if ( (LA60_0==67) ) {
-            	        alt60=2;
+            	    else if ( (LA61_0==67) ) {
+            	        alt61=2;
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 60, 0, input);
+            	            new NoViableAltException("", 61, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt60) {
+            	    switch (alt61) {
             	        case 1 :
-            	            // InternalHenshin_text.g:3489:5: ( () otherlv_2= '+' )
+            	            // InternalHenshin_text.g:3508:5: ( () otherlv_2= '+' )
             	            {
-            	            // InternalHenshin_text.g:3489:5: ( () otherlv_2= '+' )
-            	            // InternalHenshin_text.g:3490:6: () otherlv_2= '+'
+            	            // InternalHenshin_text.g:3508:5: ( () otherlv_2= '+' )
+            	            // InternalHenshin_text.g:3509:6: () otherlv_2= '+'
             	            {
-            	            // InternalHenshin_text.g:3490:6: ()
-            	            // InternalHenshin_text.g:3491:7: 
+            	            // InternalHenshin_text.g:3509:6: ()
+            	            // InternalHenshin_text.g:3510:7: 
             	            {
 
             	            							current = forceCreateModelElementAndSet(
@@ -9304,7 +9352,7 @@
 
             	            }
 
-            	            otherlv_2=(Token)match(input,66,FOLLOW_17); 
+            	            otherlv_2=(Token)match(input,66,FOLLOW_18); 
 
             	            						newLeafNode(otherlv_2, grammarAccess.getPlusOrMinusExpressionAccess().getPlusSignKeyword_1_0_0_1());
             	            					
@@ -9315,13 +9363,13 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalHenshin_text.g:3503:5: ( () otherlv_4= '-' )
+            	            // InternalHenshin_text.g:3522:5: ( () otherlv_4= '-' )
             	            {
-            	            // InternalHenshin_text.g:3503:5: ( () otherlv_4= '-' )
-            	            // InternalHenshin_text.g:3504:6: () otherlv_4= '-'
+            	            // InternalHenshin_text.g:3522:5: ( () otherlv_4= '-' )
+            	            // InternalHenshin_text.g:3523:6: () otherlv_4= '-'
             	            {
-            	            // InternalHenshin_text.g:3504:6: ()
-            	            // InternalHenshin_text.g:3505:7: 
+            	            // InternalHenshin_text.g:3523:6: ()
+            	            // InternalHenshin_text.g:3524:7: 
             	            {
 
             	            							current = forceCreateModelElementAndSet(
@@ -9331,7 +9379,7 @@
 
             	            }
 
-            	            otherlv_4=(Token)match(input,67,FOLLOW_17); 
+            	            otherlv_4=(Token)match(input,67,FOLLOW_18); 
 
             	            						newLeafNode(otherlv_4, grammarAccess.getPlusOrMinusExpressionAccess().getHyphenMinusKeyword_1_0_1_1());
             	            					
@@ -9344,16 +9392,16 @@
 
             	    }
 
-            	    // InternalHenshin_text.g:3517:4: ( (lv_right_5_0= ruleMulOrDivExpression ) )
-            	    // InternalHenshin_text.g:3518:5: (lv_right_5_0= ruleMulOrDivExpression )
+            	    // InternalHenshin_text.g:3536:4: ( (lv_right_5_0= ruleMulOrDivExpression ) )
+            	    // InternalHenshin_text.g:3537:5: (lv_right_5_0= ruleMulOrDivExpression )
             	    {
-            	    // InternalHenshin_text.g:3518:5: (lv_right_5_0= ruleMulOrDivExpression )
-            	    // InternalHenshin_text.g:3519:6: lv_right_5_0= ruleMulOrDivExpression
+            	    // InternalHenshin_text.g:3537:5: (lv_right_5_0= ruleMulOrDivExpression )
+            	    // InternalHenshin_text.g:3538:6: lv_right_5_0= ruleMulOrDivExpression
             	    {
 
             	    						newCompositeNode(grammarAccess.getPlusOrMinusExpressionAccess().getRightMulOrDivExpressionParserRuleCall_1_1_0());
             	    					
-            	    pushFollow(FOLLOW_44);
+            	    pushFollow(FOLLOW_46);
             	    lv_right_5_0=ruleMulOrDivExpression();
 
             	    state._fsp--;
@@ -9380,7 +9428,7 @@
             	    break;
 
             	default :
-            	    break loop61;
+            	    break loop62;
                 }
             } while (true);
 
@@ -9407,7 +9455,7 @@
 
 
     // $ANTLR start "entryRuleMulOrDivExpression"
-    // InternalHenshin_text.g:3541:1: entryRuleMulOrDivExpression returns [EObject current=null] : iv_ruleMulOrDivExpression= ruleMulOrDivExpression EOF ;
+    // InternalHenshin_text.g:3560:1: entryRuleMulOrDivExpression returns [EObject current=null] : iv_ruleMulOrDivExpression= ruleMulOrDivExpression EOF ;
     public final EObject entryRuleMulOrDivExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9415,8 +9463,8 @@
 
 
         try {
-            // InternalHenshin_text.g:3541:59: (iv_ruleMulOrDivExpression= ruleMulOrDivExpression EOF )
-            // InternalHenshin_text.g:3542:2: iv_ruleMulOrDivExpression= ruleMulOrDivExpression EOF
+            // InternalHenshin_text.g:3560:59: (iv_ruleMulOrDivExpression= ruleMulOrDivExpression EOF )
+            // InternalHenshin_text.g:3561:2: iv_ruleMulOrDivExpression= ruleMulOrDivExpression EOF
             {
              newCompositeNode(grammarAccess.getMulOrDivExpressionRule()); 
             pushFollow(FOLLOW_1);
@@ -9443,7 +9491,7 @@
 
 
     // $ANTLR start "ruleMulOrDivExpression"
-    // InternalHenshin_text.g:3548:1: ruleMulOrDivExpression returns [EObject current=null] : (this_PrimaryExpression_0= rulePrimaryExpression ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )* ) ;
+    // InternalHenshin_text.g:3567:1: ruleMulOrDivExpression returns [EObject current=null] : (this_PrimaryExpression_0= rulePrimaryExpression ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )* ) ;
     public final EObject ruleMulOrDivExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9458,16 +9506,16 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3554:2: ( (this_PrimaryExpression_0= rulePrimaryExpression ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )* ) )
-            // InternalHenshin_text.g:3555:2: (this_PrimaryExpression_0= rulePrimaryExpression ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )* )
+            // InternalHenshin_text.g:3573:2: ( (this_PrimaryExpression_0= rulePrimaryExpression ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )* ) )
+            // InternalHenshin_text.g:3574:2: (this_PrimaryExpression_0= rulePrimaryExpression ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )* )
             {
-            // InternalHenshin_text.g:3555:2: (this_PrimaryExpression_0= rulePrimaryExpression ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )* )
-            // InternalHenshin_text.g:3556:3: this_PrimaryExpression_0= rulePrimaryExpression ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )*
+            // InternalHenshin_text.g:3574:2: (this_PrimaryExpression_0= rulePrimaryExpression ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )* )
+            // InternalHenshin_text.g:3575:3: this_PrimaryExpression_0= rulePrimaryExpression ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )*
             {
 
             			newCompositeNode(grammarAccess.getMulOrDivExpressionAccess().getPrimaryExpressionParserRuleCall_0());
             		
-            pushFollow(FOLLOW_45);
+            pushFollow(FOLLOW_47);
             this_PrimaryExpression_0=rulePrimaryExpression();
 
             state._fsp--;
@@ -9476,23 +9524,23 @@
             			current = this_PrimaryExpression_0;
             			afterParserOrEnumRuleCall();
             		
-            // InternalHenshin_text.g:3564:3: ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )*
-            loop63:
+            // InternalHenshin_text.g:3583:3: ( () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) ) )*
+            loop64:
             do {
-                int alt63=2;
-                int LA63_0 = input.LA(1);
+                int alt64=2;
+                int LA64_0 = input.LA(1);
 
-                if ( ((LA63_0>=68 && LA63_0<=69)) ) {
-                    alt63=1;
+                if ( ((LA64_0>=68 && LA64_0<=69)) ) {
+                    alt64=1;
                 }
 
 
-                switch (alt63) {
+                switch (alt64) {
             	case 1 :
-            	    // InternalHenshin_text.g:3565:4: () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) )
+            	    // InternalHenshin_text.g:3584:4: () ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) ) ( (lv_right_3_0= rulePrimaryExpression ) )
             	    {
-            	    // InternalHenshin_text.g:3565:4: ()
-            	    // InternalHenshin_text.g:3566:5: 
+            	    // InternalHenshin_text.g:3584:4: ()
+            	    // InternalHenshin_text.g:3585:5: 
             	    {
 
             	    					current = forceCreateModelElementAndSet(
@@ -9502,33 +9550,33 @@
 
             	    }
 
-            	    // InternalHenshin_text.g:3572:4: ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) )
-            	    // InternalHenshin_text.g:3573:5: ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) )
+            	    // InternalHenshin_text.g:3591:4: ( ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) ) )
+            	    // InternalHenshin_text.g:3592:5: ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) )
             	    {
-            	    // InternalHenshin_text.g:3573:5: ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) )
-            	    // InternalHenshin_text.g:3574:6: (lv_op_2_1= '*' | lv_op_2_2= '/' )
+            	    // InternalHenshin_text.g:3592:5: ( (lv_op_2_1= '*' | lv_op_2_2= '/' ) )
+            	    // InternalHenshin_text.g:3593:6: (lv_op_2_1= '*' | lv_op_2_2= '/' )
             	    {
-            	    // InternalHenshin_text.g:3574:6: (lv_op_2_1= '*' | lv_op_2_2= '/' )
-            	    int alt62=2;
-            	    int LA62_0 = input.LA(1);
+            	    // InternalHenshin_text.g:3593:6: (lv_op_2_1= '*' | lv_op_2_2= '/' )
+            	    int alt63=2;
+            	    int LA63_0 = input.LA(1);
 
-            	    if ( (LA62_0==68) ) {
-            	        alt62=1;
+            	    if ( (LA63_0==68) ) {
+            	        alt63=1;
             	    }
-            	    else if ( (LA62_0==69) ) {
-            	        alt62=2;
+            	    else if ( (LA63_0==69) ) {
+            	        alt63=2;
             	    }
             	    else {
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 62, 0, input);
+            	            new NoViableAltException("", 63, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt62) {
+            	    switch (alt63) {
             	        case 1 :
-            	            // InternalHenshin_text.g:3575:7: lv_op_2_1= '*'
+            	            // InternalHenshin_text.g:3594:7: lv_op_2_1= '*'
             	            {
-            	            lv_op_2_1=(Token)match(input,68,FOLLOW_17); 
+            	            lv_op_2_1=(Token)match(input,68,FOLLOW_18); 
 
             	            							newLeafNode(lv_op_2_1, grammarAccess.getMulOrDivExpressionAccess().getOpAsteriskKeyword_1_1_0_0());
             	            						
@@ -9542,9 +9590,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalHenshin_text.g:3586:7: lv_op_2_2= '/'
+            	            // InternalHenshin_text.g:3605:7: lv_op_2_2= '/'
             	            {
-            	            lv_op_2_2=(Token)match(input,69,FOLLOW_17); 
+            	            lv_op_2_2=(Token)match(input,69,FOLLOW_18); 
 
             	            							newLeafNode(lv_op_2_2, grammarAccess.getMulOrDivExpressionAccess().getOpSolidusKeyword_1_1_0_1());
             	            						
@@ -9566,16 +9614,16 @@
 
             	    }
 
-            	    // InternalHenshin_text.g:3599:4: ( (lv_right_3_0= rulePrimaryExpression ) )
-            	    // InternalHenshin_text.g:3600:5: (lv_right_3_0= rulePrimaryExpression )
+            	    // InternalHenshin_text.g:3618:4: ( (lv_right_3_0= rulePrimaryExpression ) )
+            	    // InternalHenshin_text.g:3619:5: (lv_right_3_0= rulePrimaryExpression )
             	    {
-            	    // InternalHenshin_text.g:3600:5: (lv_right_3_0= rulePrimaryExpression )
-            	    // InternalHenshin_text.g:3601:6: lv_right_3_0= rulePrimaryExpression
+            	    // InternalHenshin_text.g:3619:5: (lv_right_3_0= rulePrimaryExpression )
+            	    // InternalHenshin_text.g:3620:6: lv_right_3_0= rulePrimaryExpression
             	    {
 
             	    						newCompositeNode(grammarAccess.getMulOrDivExpressionAccess().getRightPrimaryExpressionParserRuleCall_1_2_0());
             	    					
-            	    pushFollow(FOLLOW_45);
+            	    pushFollow(FOLLOW_47);
             	    lv_right_3_0=rulePrimaryExpression();
 
             	    state._fsp--;
@@ -9602,7 +9650,7 @@
             	    break;
 
             	default :
-            	    break loop63;
+            	    break loop64;
                 }
             } while (true);
 
@@ -9629,7 +9677,7 @@
 
 
     // $ANTLR start "entryRulePrimaryExpression"
-    // InternalHenshin_text.g:3623:1: entryRulePrimaryExpression returns [EObject current=null] : iv_rulePrimaryExpression= rulePrimaryExpression EOF ;
+    // InternalHenshin_text.g:3642:1: entryRulePrimaryExpression returns [EObject current=null] : iv_rulePrimaryExpression= rulePrimaryExpression EOF ;
     public final EObject entryRulePrimaryExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9637,8 +9685,8 @@
 
 
         try {
-            // InternalHenshin_text.g:3623:58: (iv_rulePrimaryExpression= rulePrimaryExpression EOF )
-            // InternalHenshin_text.g:3624:2: iv_rulePrimaryExpression= rulePrimaryExpression EOF
+            // InternalHenshin_text.g:3642:58: (iv_rulePrimaryExpression= rulePrimaryExpression EOF )
+            // InternalHenshin_text.g:3643:2: iv_rulePrimaryExpression= rulePrimaryExpression EOF
             {
              newCompositeNode(grammarAccess.getPrimaryExpressionRule()); 
             pushFollow(FOLLOW_1);
@@ -9665,7 +9713,7 @@
 
 
     // $ANTLR start "rulePrimaryExpression"
-    // InternalHenshin_text.g:3630:1: rulePrimaryExpression returns [EObject current=null] : ( ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' ) | ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) ) | this_AtomicExpression_7= ruleAtomicExpression ) ;
+    // InternalHenshin_text.g:3649:1: rulePrimaryExpression returns [EObject current=null] : ( ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' ) | ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) ) | this_AtomicExpression_7= ruleAtomicExpression ) ;
     public final EObject rulePrimaryExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9683,20 +9731,20 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3636:2: ( ( ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' ) | ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) ) | this_AtomicExpression_7= ruleAtomicExpression ) )
-            // InternalHenshin_text.g:3637:2: ( ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' ) | ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) ) | this_AtomicExpression_7= ruleAtomicExpression )
+            // InternalHenshin_text.g:3655:2: ( ( ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' ) | ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) ) | this_AtomicExpression_7= ruleAtomicExpression ) )
+            // InternalHenshin_text.g:3656:2: ( ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' ) | ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) ) | this_AtomicExpression_7= ruleAtomicExpression )
             {
-            // InternalHenshin_text.g:3637:2: ( ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' ) | ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) ) | this_AtomicExpression_7= ruleAtomicExpression )
-            int alt64=3;
+            // InternalHenshin_text.g:3656:2: ( ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' ) | ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) ) | this_AtomicExpression_7= ruleAtomicExpression )
+            int alt65=3;
             switch ( input.LA(1) ) {
             case 16:
                 {
-                alt64=1;
+                alt65=1;
                 }
                 break;
             case 47:
                 {
-                alt64=2;
+                alt65=2;
                 }
                 break;
             case RULE_ID:
@@ -9707,25 +9755,25 @@
             case 58:
             case 59:
                 {
-                alt64=3;
+                alt65=3;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 64, 0, input);
+                    new NoViableAltException("", 65, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt64) {
+            switch (alt65) {
                 case 1 :
-                    // InternalHenshin_text.g:3638:3: ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' )
+                    // InternalHenshin_text.g:3657:3: ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' )
                     {
-                    // InternalHenshin_text.g:3638:3: ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' )
-                    // InternalHenshin_text.g:3639:4: () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')'
+                    // InternalHenshin_text.g:3657:3: ( () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')' )
+                    // InternalHenshin_text.g:3658:4: () otherlv_1= '(' ( (lv_expression_2_0= ruleExpression ) ) otherlv_3= ')'
                     {
-                    // InternalHenshin_text.g:3639:4: ()
-                    // InternalHenshin_text.g:3640:5: 
+                    // InternalHenshin_text.g:3658:4: ()
+                    // InternalHenshin_text.g:3659:5: 
                     {
 
                     					current = forceCreateModelElement(
@@ -9735,20 +9783,20 @@
 
                     }
 
-                    otherlv_1=(Token)match(input,16,FOLLOW_17); 
+                    otherlv_1=(Token)match(input,16,FOLLOW_18); 
 
                     				newLeafNode(otherlv_1, grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_0_1());
                     			
-                    // InternalHenshin_text.g:3650:4: ( (lv_expression_2_0= ruleExpression ) )
-                    // InternalHenshin_text.g:3651:5: (lv_expression_2_0= ruleExpression )
+                    // InternalHenshin_text.g:3669:4: ( (lv_expression_2_0= ruleExpression ) )
+                    // InternalHenshin_text.g:3670:5: (lv_expression_2_0= ruleExpression )
                     {
-                    // InternalHenshin_text.g:3651:5: (lv_expression_2_0= ruleExpression )
-                    // InternalHenshin_text.g:3652:6: lv_expression_2_0= ruleExpression
+                    // InternalHenshin_text.g:3670:5: (lv_expression_2_0= ruleExpression )
+                    // InternalHenshin_text.g:3671:6: lv_expression_2_0= ruleExpression
                     {
 
                     						newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getExpressionExpressionParserRuleCall_0_2_0());
                     					
-                    pushFollow(FOLLOW_23);
+                    pushFollow(FOLLOW_24);
                     lv_expression_2_0=ruleExpression();
 
                     state._fsp--;
@@ -9781,13 +9829,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:3675:3: ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) )
+                    // InternalHenshin_text.g:3694:3: ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) )
                     {
-                    // InternalHenshin_text.g:3675:3: ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) )
-                    // InternalHenshin_text.g:3676:4: () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) )
+                    // InternalHenshin_text.g:3694:3: ( () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) ) )
+                    // InternalHenshin_text.g:3695:4: () otherlv_5= '!' ( (lv_expression_6_0= rulePrimaryExpression ) )
                     {
-                    // InternalHenshin_text.g:3676:4: ()
-                    // InternalHenshin_text.g:3677:5: 
+                    // InternalHenshin_text.g:3695:4: ()
+                    // InternalHenshin_text.g:3696:5: 
                     {
 
                     					current = forceCreateModelElement(
@@ -9797,15 +9845,15 @@
 
                     }
 
-                    otherlv_5=(Token)match(input,47,FOLLOW_17); 
+                    otherlv_5=(Token)match(input,47,FOLLOW_18); 
 
                     				newLeafNode(otherlv_5, grammarAccess.getPrimaryExpressionAccess().getExclamationMarkKeyword_1_1());
                     			
-                    // InternalHenshin_text.g:3687:4: ( (lv_expression_6_0= rulePrimaryExpression ) )
-                    // InternalHenshin_text.g:3688:5: (lv_expression_6_0= rulePrimaryExpression )
+                    // InternalHenshin_text.g:3706:4: ( (lv_expression_6_0= rulePrimaryExpression ) )
+                    // InternalHenshin_text.g:3707:5: (lv_expression_6_0= rulePrimaryExpression )
                     {
-                    // InternalHenshin_text.g:3688:5: (lv_expression_6_0= rulePrimaryExpression )
-                    // InternalHenshin_text.g:3689:6: lv_expression_6_0= rulePrimaryExpression
+                    // InternalHenshin_text.g:3707:5: (lv_expression_6_0= rulePrimaryExpression )
+                    // InternalHenshin_text.g:3708:6: lv_expression_6_0= rulePrimaryExpression
                     {
 
                     						newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getExpressionPrimaryExpressionParserRuleCall_1_2_0());
@@ -9839,7 +9887,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:3708:3: this_AtomicExpression_7= ruleAtomicExpression
+                    // InternalHenshin_text.g:3727:3: this_AtomicExpression_7= ruleAtomicExpression
                     {
 
                     			newCompositeNode(grammarAccess.getPrimaryExpressionAccess().getAtomicExpressionParserRuleCall_2());
@@ -9879,7 +9927,7 @@
 
 
     // $ANTLR start "entryRuleAtomicExpression"
-    // InternalHenshin_text.g:3720:1: entryRuleAtomicExpression returns [EObject current=null] : iv_ruleAtomicExpression= ruleAtomicExpression EOF ;
+    // InternalHenshin_text.g:3739:1: entryRuleAtomicExpression returns [EObject current=null] : iv_ruleAtomicExpression= ruleAtomicExpression EOF ;
     public final EObject entryRuleAtomicExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9887,8 +9935,8 @@
 
 
         try {
-            // InternalHenshin_text.g:3720:57: (iv_ruleAtomicExpression= ruleAtomicExpression EOF )
-            // InternalHenshin_text.g:3721:2: iv_ruleAtomicExpression= ruleAtomicExpression EOF
+            // InternalHenshin_text.g:3739:57: (iv_ruleAtomicExpression= ruleAtomicExpression EOF )
+            // InternalHenshin_text.g:3740:2: iv_ruleAtomicExpression= ruleAtomicExpression EOF
             {
              newCompositeNode(grammarAccess.getAtomicExpressionRule()); 
             pushFollow(FOLLOW_1);
@@ -9915,7 +9963,7 @@
 
 
     // $ANTLR start "ruleAtomicExpression"
-    // InternalHenshin_text.g:3727:1: ruleAtomicExpression returns [EObject current=null] : ( ( () ( (otherlv_1= RULE_ID ) ) ) | ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' ) | ( () ( (lv_value_10_0= ruleJavaAttribute ) ) ) | ( () ( (lv_value_12_0= RULE_STRING ) ) ) | ( () ( (lv_value_14_0= RULE_DECIMAL ) ) ) | ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) ) | ( () ( (lv_value_18_0= RULE_INT ) ) ) | ( () ( (lv_value_20_0= ruleEBoolean ) ) ) ) ;
+    // InternalHenshin_text.g:3746:1: ruleAtomicExpression returns [EObject current=null] : ( ( () ( (otherlv_1= RULE_ID ) ) ) | ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' ) | ( () ( (lv_value_10_0= ruleJavaAttribute ) ) ) | ( () ( (lv_value_12_0= RULE_STRING ) ) ) | ( () ( (lv_value_14_0= RULE_DECIMAL ) ) ) | ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) ) | ( () ( (lv_value_18_0= RULE_INT ) ) ) | ( () ( (lv_value_20_0= ruleEBoolean ) ) ) ) ;
     public final EObject ruleAtomicExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9942,21 +9990,21 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:3733:2: ( ( ( () ( (otherlv_1= RULE_ID ) ) ) | ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' ) | ( () ( (lv_value_10_0= ruleJavaAttribute ) ) ) | ( () ( (lv_value_12_0= RULE_STRING ) ) ) | ( () ( (lv_value_14_0= RULE_DECIMAL ) ) ) | ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) ) | ( () ( (lv_value_18_0= RULE_INT ) ) ) | ( () ( (lv_value_20_0= ruleEBoolean ) ) ) ) )
-            // InternalHenshin_text.g:3734:2: ( ( () ( (otherlv_1= RULE_ID ) ) ) | ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' ) | ( () ( (lv_value_10_0= ruleJavaAttribute ) ) ) | ( () ( (lv_value_12_0= RULE_STRING ) ) ) | ( () ( (lv_value_14_0= RULE_DECIMAL ) ) ) | ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) ) | ( () ( (lv_value_18_0= RULE_INT ) ) ) | ( () ( (lv_value_20_0= ruleEBoolean ) ) ) )
+            // InternalHenshin_text.g:3752:2: ( ( ( () ( (otherlv_1= RULE_ID ) ) ) | ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' ) | ( () ( (lv_value_10_0= ruleJavaAttribute ) ) ) | ( () ( (lv_value_12_0= RULE_STRING ) ) ) | ( () ( (lv_value_14_0= RULE_DECIMAL ) ) ) | ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) ) | ( () ( (lv_value_18_0= RULE_INT ) ) ) | ( () ( (lv_value_20_0= ruleEBoolean ) ) ) ) )
+            // InternalHenshin_text.g:3753:2: ( ( () ( (otherlv_1= RULE_ID ) ) ) | ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' ) | ( () ( (lv_value_10_0= ruleJavaAttribute ) ) ) | ( () ( (lv_value_12_0= RULE_STRING ) ) ) | ( () ( (lv_value_14_0= RULE_DECIMAL ) ) ) | ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) ) | ( () ( (lv_value_18_0= RULE_INT ) ) ) | ( () ( (lv_value_20_0= ruleEBoolean ) ) ) )
             {
-            // InternalHenshin_text.g:3734:2: ( ( () ( (otherlv_1= RULE_ID ) ) ) | ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' ) | ( () ( (lv_value_10_0= ruleJavaAttribute ) ) ) | ( () ( (lv_value_12_0= RULE_STRING ) ) ) | ( () ( (lv_value_14_0= RULE_DECIMAL ) ) ) | ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) ) | ( () ( (lv_value_18_0= RULE_INT ) ) ) | ( () ( (lv_value_20_0= ruleEBoolean ) ) ) )
-            int alt67=8;
-            alt67 = dfa67.predict(input);
-            switch (alt67) {
+            // InternalHenshin_text.g:3753:2: ( ( () ( (otherlv_1= RULE_ID ) ) ) | ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' ) | ( () ( (lv_value_10_0= ruleJavaAttribute ) ) ) | ( () ( (lv_value_12_0= RULE_STRING ) ) ) | ( () ( (lv_value_14_0= RULE_DECIMAL ) ) ) | ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) ) | ( () ( (lv_value_18_0= RULE_INT ) ) ) | ( () ( (lv_value_20_0= ruleEBoolean ) ) ) )
+            int alt68=8;
+            alt68 = dfa68.predict(input);
+            switch (alt68) {
                 case 1 :
-                    // InternalHenshin_text.g:3735:3: ( () ( (otherlv_1= RULE_ID ) ) )
+                    // InternalHenshin_text.g:3754:3: ( () ( (otherlv_1= RULE_ID ) ) )
                     {
-                    // InternalHenshin_text.g:3735:3: ( () ( (otherlv_1= RULE_ID ) ) )
-                    // InternalHenshin_text.g:3736:4: () ( (otherlv_1= RULE_ID ) )
+                    // InternalHenshin_text.g:3754:3: ( () ( (otherlv_1= RULE_ID ) ) )
+                    // InternalHenshin_text.g:3755:4: () ( (otherlv_1= RULE_ID ) )
                     {
-                    // InternalHenshin_text.g:3736:4: ()
-                    // InternalHenshin_text.g:3737:5: 
+                    // InternalHenshin_text.g:3755:4: ()
+                    // InternalHenshin_text.g:3756:5: 
                     {
 
                     					current = forceCreateModelElement(
@@ -9966,11 +10014,11 @@
 
                     }
 
-                    // InternalHenshin_text.g:3743:4: ( (otherlv_1= RULE_ID ) )
-                    // InternalHenshin_text.g:3744:5: (otherlv_1= RULE_ID )
+                    // InternalHenshin_text.g:3762:4: ( (otherlv_1= RULE_ID ) )
+                    // InternalHenshin_text.g:3763:5: (otherlv_1= RULE_ID )
                     {
-                    // InternalHenshin_text.g:3744:5: (otherlv_1= RULE_ID )
-                    // InternalHenshin_text.g:3745:6: otherlv_1= RULE_ID
+                    // InternalHenshin_text.g:3763:5: (otherlv_1= RULE_ID )
+                    // InternalHenshin_text.g:3764:6: otherlv_1= RULE_ID
                     {
 
                     						if (current==null) {
@@ -9994,13 +10042,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:3758:3: ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' )
+                    // InternalHenshin_text.g:3777:3: ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' )
                     {
-                    // InternalHenshin_text.g:3758:3: ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' )
-                    // InternalHenshin_text.g:3759:4: () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')'
+                    // InternalHenshin_text.g:3777:3: ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' )
+                    // InternalHenshin_text.g:3778:4: () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')'
                     {
-                    // InternalHenshin_text.g:3759:4: ()
-                    // InternalHenshin_text.g:3760:5: 
+                    // InternalHenshin_text.g:3778:4: ()
+                    // InternalHenshin_text.g:3779:5: 
                     {
 
                     					current = forceCreateModelElement(
@@ -10010,11 +10058,11 @@
 
                     }
 
-                    // InternalHenshin_text.g:3766:4: ( (lv_value_3_0= ruleEString ) )
-                    // InternalHenshin_text.g:3767:5: (lv_value_3_0= ruleEString )
+                    // InternalHenshin_text.g:3785:4: ( (lv_value_3_0= ruleEString ) )
+                    // InternalHenshin_text.g:3786:5: (lv_value_3_0= ruleEString )
                     {
-                    // InternalHenshin_text.g:3767:5: (lv_value_3_0= ruleEString )
-                    // InternalHenshin_text.g:3768:6: lv_value_3_0= ruleEString
+                    // InternalHenshin_text.g:3786:5: (lv_value_3_0= ruleEString )
+                    // InternalHenshin_text.g:3787:6: lv_value_3_0= ruleEString
                     {
 
                     						newCompositeNode(grammarAccess.getAtomicExpressionAccess().getValueEStringParserRuleCall_1_1_0());
@@ -10041,26 +10089,26 @@
 
                     }
 
-                    otherlv_4=(Token)match(input,16,FOLLOW_46); 
+                    otherlv_4=(Token)match(input,16,FOLLOW_48); 
 
                     				newLeafNode(otherlv_4, grammarAccess.getAtomicExpressionAccess().getLeftParenthesisKeyword_1_2());
                     			
-                    // InternalHenshin_text.g:3789:4: ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )?
-                    int alt66=2;
-                    int LA66_0 = input.LA(1);
+                    // InternalHenshin_text.g:3808:4: ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )?
+                    int alt67=2;
+                    int LA67_0 = input.LA(1);
 
-                    if ( ((LA66_0>=RULE_ID && LA66_0<=RULE_INT)||LA66_0==16||LA66_0==47||(LA66_0>=58 && LA66_0<=59)) ) {
-                        alt66=1;
+                    if ( ((LA67_0>=RULE_ID && LA67_0<=RULE_INT)||LA67_0==16||LA67_0==47||(LA67_0>=58 && LA67_0<=59)) ) {
+                        alt67=1;
                     }
-                    switch (alt66) {
+                    switch (alt67) {
                         case 1 :
-                            // InternalHenshin_text.g:3790:5: ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )*
+                            // InternalHenshin_text.g:3809:5: ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )*
                             {
-                            // InternalHenshin_text.g:3790:5: ( (lv_javaParameter_5_0= ruleExpression ) )
-                            // InternalHenshin_text.g:3791:6: (lv_javaParameter_5_0= ruleExpression )
+                            // InternalHenshin_text.g:3809:5: ( (lv_javaParameter_5_0= ruleExpression ) )
+                            // InternalHenshin_text.g:3810:6: (lv_javaParameter_5_0= ruleExpression )
                             {
-                            // InternalHenshin_text.g:3791:6: (lv_javaParameter_5_0= ruleExpression )
-                            // InternalHenshin_text.g:3792:7: lv_javaParameter_5_0= ruleExpression
+                            // InternalHenshin_text.g:3810:6: (lv_javaParameter_5_0= ruleExpression )
+                            // InternalHenshin_text.g:3811:7: lv_javaParameter_5_0= ruleExpression
                             {
 
                             							newCompositeNode(grammarAccess.getAtomicExpressionAccess().getJavaParameterExpressionParserRuleCall_1_3_0_0());
@@ -10087,30 +10135,30 @@
 
                             }
 
-                            // InternalHenshin_text.g:3809:5: (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )*
-                            loop65:
+                            // InternalHenshin_text.g:3828:5: (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )*
+                            loop66:
                             do {
-                                int alt65=2;
-                                int LA65_0 = input.LA(1);
+                                int alt66=2;
+                                int LA66_0 = input.LA(1);
 
-                                if ( (LA65_0==17) ) {
-                                    alt65=1;
+                                if ( (LA66_0==17) ) {
+                                    alt66=1;
                                 }
 
 
-                                switch (alt65) {
+                                switch (alt66) {
                             	case 1 :
-                            	    // InternalHenshin_text.g:3810:6: otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) )
+                            	    // InternalHenshin_text.g:3829:6: otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) )
                             	    {
-                            	    otherlv_6=(Token)match(input,17,FOLLOW_17); 
+                            	    otherlv_6=(Token)match(input,17,FOLLOW_18); 
 
                             	    						newLeafNode(otherlv_6, grammarAccess.getAtomicExpressionAccess().getCommaKeyword_1_3_1_0());
                             	    					
-                            	    // InternalHenshin_text.g:3814:6: ( (lv_javaParameter_7_0= ruleExpression ) )
-                            	    // InternalHenshin_text.g:3815:7: (lv_javaParameter_7_0= ruleExpression )
+                            	    // InternalHenshin_text.g:3833:6: ( (lv_javaParameter_7_0= ruleExpression ) )
+                            	    // InternalHenshin_text.g:3834:7: (lv_javaParameter_7_0= ruleExpression )
                             	    {
-                            	    // InternalHenshin_text.g:3815:7: (lv_javaParameter_7_0= ruleExpression )
-                            	    // InternalHenshin_text.g:3816:8: lv_javaParameter_7_0= ruleExpression
+                            	    // InternalHenshin_text.g:3834:7: (lv_javaParameter_7_0= ruleExpression )
+                            	    // InternalHenshin_text.g:3835:8: lv_javaParameter_7_0= ruleExpression
                             	    {
 
                             	    								newCompositeNode(grammarAccess.getAtomicExpressionAccess().getJavaParameterExpressionParserRuleCall_1_3_1_1_0());
@@ -10142,7 +10190,7 @@
                             	    break;
 
                             	default :
-                            	    break loop65;
+                            	    break loop66;
                                 }
                             } while (true);
 
@@ -10163,13 +10211,13 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:3841:3: ( () ( (lv_value_10_0= ruleJavaAttribute ) ) )
+                    // InternalHenshin_text.g:3860:3: ( () ( (lv_value_10_0= ruleJavaAttribute ) ) )
                     {
-                    // InternalHenshin_text.g:3841:3: ( () ( (lv_value_10_0= ruleJavaAttribute ) ) )
-                    // InternalHenshin_text.g:3842:4: () ( (lv_value_10_0= ruleJavaAttribute ) )
+                    // InternalHenshin_text.g:3860:3: ( () ( (lv_value_10_0= ruleJavaAttribute ) ) )
+                    // InternalHenshin_text.g:3861:4: () ( (lv_value_10_0= ruleJavaAttribute ) )
                     {
-                    // InternalHenshin_text.g:3842:4: ()
-                    // InternalHenshin_text.g:3843:5: 
+                    // InternalHenshin_text.g:3861:4: ()
+                    // InternalHenshin_text.g:3862:5: 
                     {
 
                     					current = forceCreateModelElement(
@@ -10179,11 +10227,11 @@
 
                     }
 
-                    // InternalHenshin_text.g:3849:4: ( (lv_value_10_0= ruleJavaAttribute ) )
-                    // InternalHenshin_text.g:3850:5: (lv_value_10_0= ruleJavaAttribute )
+                    // InternalHenshin_text.g:3868:4: ( (lv_value_10_0= ruleJavaAttribute ) )
+                    // InternalHenshin_text.g:3869:5: (lv_value_10_0= ruleJavaAttribute )
                     {
-                    // InternalHenshin_text.g:3850:5: (lv_value_10_0= ruleJavaAttribute )
-                    // InternalHenshin_text.g:3851:6: lv_value_10_0= ruleJavaAttribute
+                    // InternalHenshin_text.g:3869:5: (lv_value_10_0= ruleJavaAttribute )
+                    // InternalHenshin_text.g:3870:6: lv_value_10_0= ruleJavaAttribute
                     {
 
                     						newCompositeNode(grammarAccess.getAtomicExpressionAccess().getValueJavaAttributeParserRuleCall_2_1_0());
@@ -10217,13 +10265,13 @@
                     }
                     break;
                 case 4 :
-                    // InternalHenshin_text.g:3870:3: ( () ( (lv_value_12_0= RULE_STRING ) ) )
+                    // InternalHenshin_text.g:3889:3: ( () ( (lv_value_12_0= RULE_STRING ) ) )
                     {
-                    // InternalHenshin_text.g:3870:3: ( () ( (lv_value_12_0= RULE_STRING ) ) )
-                    // InternalHenshin_text.g:3871:4: () ( (lv_value_12_0= RULE_STRING ) )
+                    // InternalHenshin_text.g:3889:3: ( () ( (lv_value_12_0= RULE_STRING ) ) )
+                    // InternalHenshin_text.g:3890:4: () ( (lv_value_12_0= RULE_STRING ) )
                     {
-                    // InternalHenshin_text.g:3871:4: ()
-                    // InternalHenshin_text.g:3872:5: 
+                    // InternalHenshin_text.g:3890:4: ()
+                    // InternalHenshin_text.g:3891:5: 
                     {
 
                     					current = forceCreateModelElement(
@@ -10233,11 +10281,11 @@
 
                     }
 
-                    // InternalHenshin_text.g:3878:4: ( (lv_value_12_0= RULE_STRING ) )
-                    // InternalHenshin_text.g:3879:5: (lv_value_12_0= RULE_STRING )
+                    // InternalHenshin_text.g:3897:4: ( (lv_value_12_0= RULE_STRING ) )
+                    // InternalHenshin_text.g:3898:5: (lv_value_12_0= RULE_STRING )
                     {
-                    // InternalHenshin_text.g:3879:5: (lv_value_12_0= RULE_STRING )
-                    // InternalHenshin_text.g:3880:6: lv_value_12_0= RULE_STRING
+                    // InternalHenshin_text.g:3898:5: (lv_value_12_0= RULE_STRING )
+                    // InternalHenshin_text.g:3899:6: lv_value_12_0= RULE_STRING
                     {
                     lv_value_12_0=(Token)match(input,RULE_STRING,FOLLOW_2); 
 
@@ -10266,13 +10314,13 @@
                     }
                     break;
                 case 5 :
-                    // InternalHenshin_text.g:3898:3: ( () ( (lv_value_14_0= RULE_DECIMAL ) ) )
+                    // InternalHenshin_text.g:3917:3: ( () ( (lv_value_14_0= RULE_DECIMAL ) ) )
                     {
-                    // InternalHenshin_text.g:3898:3: ( () ( (lv_value_14_0= RULE_DECIMAL ) ) )
-                    // InternalHenshin_text.g:3899:4: () ( (lv_value_14_0= RULE_DECIMAL ) )
+                    // InternalHenshin_text.g:3917:3: ( () ( (lv_value_14_0= RULE_DECIMAL ) ) )
+                    // InternalHenshin_text.g:3918:4: () ( (lv_value_14_0= RULE_DECIMAL ) )
                     {
-                    // InternalHenshin_text.g:3899:4: ()
-                    // InternalHenshin_text.g:3900:5: 
+                    // InternalHenshin_text.g:3918:4: ()
+                    // InternalHenshin_text.g:3919:5: 
                     {
 
                     					current = forceCreateModelElement(
@@ -10282,11 +10330,11 @@
 
                     }
 
-                    // InternalHenshin_text.g:3906:4: ( (lv_value_14_0= RULE_DECIMAL ) )
-                    // InternalHenshin_text.g:3907:5: (lv_value_14_0= RULE_DECIMAL )
+                    // InternalHenshin_text.g:3925:4: ( (lv_value_14_0= RULE_DECIMAL ) )
+                    // InternalHenshin_text.g:3926:5: (lv_value_14_0= RULE_DECIMAL )
                     {
-                    // InternalHenshin_text.g:3907:5: (lv_value_14_0= RULE_DECIMAL )
-                    // InternalHenshin_text.g:3908:6: lv_value_14_0= RULE_DECIMAL
+                    // InternalHenshin_text.g:3926:5: (lv_value_14_0= RULE_DECIMAL )
+                    // InternalHenshin_text.g:3927:6: lv_value_14_0= RULE_DECIMAL
                     {
                     lv_value_14_0=(Token)match(input,RULE_DECIMAL,FOLLOW_2); 
 
@@ -10315,13 +10363,13 @@
                     }
                     break;
                 case 6 :
-                    // InternalHenshin_text.g:3926:3: ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) )
+                    // InternalHenshin_text.g:3945:3: ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) )
                     {
-                    // InternalHenshin_text.g:3926:3: ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) )
-                    // InternalHenshin_text.g:3927:4: () ( (lv_value_16_0= RULE_NEGATIVE ) )
+                    // InternalHenshin_text.g:3945:3: ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) )
+                    // InternalHenshin_text.g:3946:4: () ( (lv_value_16_0= RULE_NEGATIVE ) )
                     {
-                    // InternalHenshin_text.g:3927:4: ()
-                    // InternalHenshin_text.g:3928:5: 
+                    // InternalHenshin_text.g:3946:4: ()
+                    // InternalHenshin_text.g:3947:5: 
                     {
 
                     					current = forceCreateModelElement(
@@ -10331,11 +10379,11 @@
 
                     }
 
-                    // InternalHenshin_text.g:3934:4: ( (lv_value_16_0= RULE_NEGATIVE ) )
-                    // InternalHenshin_text.g:3935:5: (lv_value_16_0= RULE_NEGATIVE )
+                    // InternalHenshin_text.g:3953:4: ( (lv_value_16_0= RULE_NEGATIVE ) )
+                    // InternalHenshin_text.g:3954:5: (lv_value_16_0= RULE_NEGATIVE )
                     {
-                    // InternalHenshin_text.g:3935:5: (lv_value_16_0= RULE_NEGATIVE )
-                    // InternalHenshin_text.g:3936:6: lv_value_16_0= RULE_NEGATIVE
+                    // InternalHenshin_text.g:3954:5: (lv_value_16_0= RULE_NEGATIVE )
+                    // InternalHenshin_text.g:3955:6: lv_value_16_0= RULE_NEGATIVE
                     {
                     lv_value_16_0=(Token)match(input,RULE_NEGATIVE,FOLLOW_2); 
 
@@ -10364,13 +10412,13 @@
                     }
                     break;
                 case 7 :
-                    // InternalHenshin_text.g:3954:3: ( () ( (lv_value_18_0= RULE_INT ) ) )
+                    // InternalHenshin_text.g:3973:3: ( () ( (lv_value_18_0= RULE_INT ) ) )
                     {
-                    // InternalHenshin_text.g:3954:3: ( () ( (lv_value_18_0= RULE_INT ) ) )
-                    // InternalHenshin_text.g:3955:4: () ( (lv_value_18_0= RULE_INT ) )
+                    // InternalHenshin_text.g:3973:3: ( () ( (lv_value_18_0= RULE_INT ) ) )
+                    // InternalHenshin_text.g:3974:4: () ( (lv_value_18_0= RULE_INT ) )
                     {
-                    // InternalHenshin_text.g:3955:4: ()
-                    // InternalHenshin_text.g:3956:5: 
+                    // InternalHenshin_text.g:3974:4: ()
+                    // InternalHenshin_text.g:3975:5: 
                     {
 
                     					current = forceCreateModelElement(
@@ -10380,11 +10428,11 @@
 
                     }
 
-                    // InternalHenshin_text.g:3962:4: ( (lv_value_18_0= RULE_INT ) )
-                    // InternalHenshin_text.g:3963:5: (lv_value_18_0= RULE_INT )
+                    // InternalHenshin_text.g:3981:4: ( (lv_value_18_0= RULE_INT ) )
+                    // InternalHenshin_text.g:3982:5: (lv_value_18_0= RULE_INT )
                     {
-                    // InternalHenshin_text.g:3963:5: (lv_value_18_0= RULE_INT )
-                    // InternalHenshin_text.g:3964:6: lv_value_18_0= RULE_INT
+                    // InternalHenshin_text.g:3982:5: (lv_value_18_0= RULE_INT )
+                    // InternalHenshin_text.g:3983:6: lv_value_18_0= RULE_INT
                     {
                     lv_value_18_0=(Token)match(input,RULE_INT,FOLLOW_2); 
 
@@ -10413,13 +10461,13 @@
                     }
                     break;
                 case 8 :
-                    // InternalHenshin_text.g:3982:3: ( () ( (lv_value_20_0= ruleEBoolean ) ) )
+                    // InternalHenshin_text.g:4001:3: ( () ( (lv_value_20_0= ruleEBoolean ) ) )
                     {
-                    // InternalHenshin_text.g:3982:3: ( () ( (lv_value_20_0= ruleEBoolean ) ) )
-                    // InternalHenshin_text.g:3983:4: () ( (lv_value_20_0= ruleEBoolean ) )
+                    // InternalHenshin_text.g:4001:3: ( () ( (lv_value_20_0= ruleEBoolean ) ) )
+                    // InternalHenshin_text.g:4002:4: () ( (lv_value_20_0= ruleEBoolean ) )
                     {
-                    // InternalHenshin_text.g:3983:4: ()
-                    // InternalHenshin_text.g:3984:5: 
+                    // InternalHenshin_text.g:4002:4: ()
+                    // InternalHenshin_text.g:4003:5: 
                     {
 
                     					current = forceCreateModelElement(
@@ -10429,11 +10477,11 @@
 
                     }
 
-                    // InternalHenshin_text.g:3990:4: ( (lv_value_20_0= ruleEBoolean ) )
-                    // InternalHenshin_text.g:3991:5: (lv_value_20_0= ruleEBoolean )
+                    // InternalHenshin_text.g:4009:4: ( (lv_value_20_0= ruleEBoolean ) )
+                    // InternalHenshin_text.g:4010:5: (lv_value_20_0= ruleEBoolean )
                     {
-                    // InternalHenshin_text.g:3991:5: (lv_value_20_0= ruleEBoolean )
-                    // InternalHenshin_text.g:3992:6: lv_value_20_0= ruleEBoolean
+                    // InternalHenshin_text.g:4010:5: (lv_value_20_0= ruleEBoolean )
+                    // InternalHenshin_text.g:4011:6: lv_value_20_0= ruleEBoolean
                     {
 
                     						newCompositeNode(grammarAccess.getAtomicExpressionAccess().getValueEBooleanParserRuleCall_7_1_0());
@@ -10489,7 +10537,7 @@
 
 
     // $ANTLR start "entryRuleJavaAttribute"
-    // InternalHenshin_text.g:4014:1: entryRuleJavaAttribute returns [String current=null] : iv_ruleJavaAttribute= ruleJavaAttribute EOF ;
+    // InternalHenshin_text.g:4033:1: entryRuleJavaAttribute returns [String current=null] : iv_ruleJavaAttribute= ruleJavaAttribute EOF ;
     public final String entryRuleJavaAttribute() throws RecognitionException {
         String current = null;
 
@@ -10497,8 +10545,8 @@
 
 
         try {
-            // InternalHenshin_text.g:4014:53: (iv_ruleJavaAttribute= ruleJavaAttribute EOF )
-            // InternalHenshin_text.g:4015:2: iv_ruleJavaAttribute= ruleJavaAttribute EOF
+            // InternalHenshin_text.g:4033:53: (iv_ruleJavaAttribute= ruleJavaAttribute EOF )
+            // InternalHenshin_text.g:4034:2: iv_ruleJavaAttribute= ruleJavaAttribute EOF
             {
              newCompositeNode(grammarAccess.getJavaAttributeRule()); 
             pushFollow(FOLLOW_1);
@@ -10525,7 +10573,7 @@
 
 
     // $ANTLR start "ruleJavaAttribute"
-    // InternalHenshin_text.g:4021:1: ruleJavaAttribute returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID kw= '.' this_ID_2= RULE_ID ) ;
+    // InternalHenshin_text.g:4040:1: ruleJavaAttribute returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID kw= '.' this_ID_2= RULE_ID ) ;
     public final AntlrDatatypeRuleToken ruleJavaAttribute() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -10537,13 +10585,13 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:4027:2: ( (this_ID_0= RULE_ID kw= '.' this_ID_2= RULE_ID ) )
-            // InternalHenshin_text.g:4028:2: (this_ID_0= RULE_ID kw= '.' this_ID_2= RULE_ID )
+            // InternalHenshin_text.g:4046:2: ( (this_ID_0= RULE_ID kw= '.' this_ID_2= RULE_ID ) )
+            // InternalHenshin_text.g:4047:2: (this_ID_0= RULE_ID kw= '.' this_ID_2= RULE_ID )
             {
-            // InternalHenshin_text.g:4028:2: (this_ID_0= RULE_ID kw= '.' this_ID_2= RULE_ID )
-            // InternalHenshin_text.g:4029:3: this_ID_0= RULE_ID kw= '.' this_ID_2= RULE_ID
+            // InternalHenshin_text.g:4047:2: (this_ID_0= RULE_ID kw= '.' this_ID_2= RULE_ID )
+            // InternalHenshin_text.g:4048:3: this_ID_0= RULE_ID kw= '.' this_ID_2= RULE_ID
             {
-            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_47); 
+            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_49); 
 
             			current.merge(this_ID_0);
             		
@@ -10584,8 +10632,146 @@
     // $ANTLR end "ruleJavaAttribute"
 
 
+    // $ANTLR start "ruleParameterKindRule"
+    // InternalHenshin_text.g:4071:1: ruleParameterKindRule returns [Enumerator current=null] : ( (enumLiteral_0= 'IN' ) | (enumLiteral_1= 'OUT' ) | (enumLiteral_2= 'INOUT' ) | (enumLiteral_3= 'VAR' ) ) ;
+    public final Enumerator ruleParameterKindRule() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+        Token enumLiteral_2=null;
+        Token enumLiteral_3=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalHenshin_text.g:4077:2: ( ( (enumLiteral_0= 'IN' ) | (enumLiteral_1= 'OUT' ) | (enumLiteral_2= 'INOUT' ) | (enumLiteral_3= 'VAR' ) ) )
+            // InternalHenshin_text.g:4078:2: ( (enumLiteral_0= 'IN' ) | (enumLiteral_1= 'OUT' ) | (enumLiteral_2= 'INOUT' ) | (enumLiteral_3= 'VAR' ) )
+            {
+            // InternalHenshin_text.g:4078:2: ( (enumLiteral_0= 'IN' ) | (enumLiteral_1= 'OUT' ) | (enumLiteral_2= 'INOUT' ) | (enumLiteral_3= 'VAR' ) )
+            int alt69=4;
+            switch ( input.LA(1) ) {
+            case 70:
+                {
+                alt69=1;
+                }
+                break;
+            case 71:
+                {
+                alt69=2;
+                }
+                break;
+            case 72:
+                {
+                alt69=3;
+                }
+                break;
+            case 73:
+                {
+                alt69=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 69, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt69) {
+                case 1 :
+                    // InternalHenshin_text.g:4079:3: (enumLiteral_0= 'IN' )
+                    {
+                    // InternalHenshin_text.g:4079:3: (enumLiteral_0= 'IN' )
+                    // InternalHenshin_text.g:4080:4: enumLiteral_0= 'IN'
+                    {
+                    enumLiteral_0=(Token)match(input,70,FOLLOW_2); 
+
+                    				current = grammarAccess.getParameterKindRuleAccess().getINEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                    				newLeafNode(enumLiteral_0, grammarAccess.getParameterKindRuleAccess().getINEnumLiteralDeclaration_0());
+                    			
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalHenshin_text.g:4087:3: (enumLiteral_1= 'OUT' )
+                    {
+                    // InternalHenshin_text.g:4087:3: (enumLiteral_1= 'OUT' )
+                    // InternalHenshin_text.g:4088:4: enumLiteral_1= 'OUT'
+                    {
+                    enumLiteral_1=(Token)match(input,71,FOLLOW_2); 
+
+                    				current = grammarAccess.getParameterKindRuleAccess().getOUTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                    				newLeafNode(enumLiteral_1, grammarAccess.getParameterKindRuleAccess().getOUTEnumLiteralDeclaration_1());
+                    			
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalHenshin_text.g:4095:3: (enumLiteral_2= 'INOUT' )
+                    {
+                    // InternalHenshin_text.g:4095:3: (enumLiteral_2= 'INOUT' )
+                    // InternalHenshin_text.g:4096:4: enumLiteral_2= 'INOUT'
+                    {
+                    enumLiteral_2=(Token)match(input,72,FOLLOW_2); 
+
+                    				current = grammarAccess.getParameterKindRuleAccess().getINOUTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                    				newLeafNode(enumLiteral_2, grammarAccess.getParameterKindRuleAccess().getINOUTEnumLiteralDeclaration_2());
+                    			
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalHenshin_text.g:4103:3: (enumLiteral_3= 'VAR' )
+                    {
+                    // InternalHenshin_text.g:4103:3: (enumLiteral_3= 'VAR' )
+                    // InternalHenshin_text.g:4104:4: enumLiteral_3= 'VAR'
+                    {
+                    enumLiteral_3=(Token)match(input,73,FOLLOW_2); 
+
+                    				current = grammarAccess.getParameterKindRuleAccess().getVAREnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                    				newLeafNode(enumLiteral_3, grammarAccess.getParameterKindRuleAccess().getVAREnumLiteralDeclaration_3());
+                    			
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            	leaveRule();
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleParameterKindRule"
+
+
     // $ANTLR start "ruleType"
-    // InternalHenshin_text.g:4052:1: ruleType returns [Enumerator current=null] : ( (enumLiteral_0= 'EBigDecimal' ) | (enumLiteral_1= 'EBigInteger' ) | (enumLiteral_2= 'EBoolean' ) | (enumLiteral_3= 'EBooleanObject' ) | (enumLiteral_4= 'EByte' ) | (enumLiteral_5= 'EByteArray' ) | (enumLiteral_6= 'EByteObject' ) | (enumLiteral_7= 'EChar' ) | (enumLiteral_8= 'ECharacterObject' ) | (enumLiteral_9= 'EDate' ) | (enumLiteral_10= 'EDiagnosticChain' ) | (enumLiteral_11= 'EDouble' ) | (enumLiteral_12= 'EDoubleObject' ) | (enumLiteral_13= 'EEList' ) | (enumLiteral_14= 'EEnumerator' ) | (enumLiteral_15= 'EFeatureMap' ) | (enumLiteral_16= 'EFeatureMapEntry' ) | (enumLiteral_17= 'EFloat' ) | (enumLiteral_18= 'EFloatObject' ) | (enumLiteral_19= 'EInt' ) | (enumLiteral_20= 'EIntegerObject' ) | (enumLiteral_21= 'ETreeIterator' ) | (enumLiteral_22= 'EInvocationTargetException' ) | (enumLiteral_23= 'EJavaClass' ) | (enumLiteral_24= 'EJavaObject' ) | (enumLiteral_25= 'ELong' ) | (enumLiteral_26= 'ELongObject' ) | (enumLiteral_27= 'EMap' ) | (enumLiteral_28= 'EResource' ) | (enumLiteral_29= 'EResourceSet' ) | (enumLiteral_30= 'EShort' ) | (enumLiteral_31= 'EShortObject' ) | (enumLiteral_32= 'EString' ) ) ;
+    // InternalHenshin_text.g:4114:1: ruleType returns [Enumerator current=null] : ( (enumLiteral_0= 'EBigDecimal' ) | (enumLiteral_1= 'EBigInteger' ) | (enumLiteral_2= 'EBoolean' ) | (enumLiteral_3= 'EBooleanObject' ) | (enumLiteral_4= 'EByte' ) | (enumLiteral_5= 'EByteArray' ) | (enumLiteral_6= 'EByteObject' ) | (enumLiteral_7= 'EChar' ) | (enumLiteral_8= 'ECharacterObject' ) | (enumLiteral_9= 'EDate' ) | (enumLiteral_10= 'EDiagnosticChain' ) | (enumLiteral_11= 'EDouble' ) | (enumLiteral_12= 'EDoubleObject' ) | (enumLiteral_13= 'EEList' ) | (enumLiteral_14= 'EEnumerator' ) | (enumLiteral_15= 'EFeatureMap' ) | (enumLiteral_16= 'EFeatureMapEntry' ) | (enumLiteral_17= 'EFloat' ) | (enumLiteral_18= 'EFloatObject' ) | (enumLiteral_19= 'EInt' ) | (enumLiteral_20= 'EIntegerObject' ) | (enumLiteral_21= 'ETreeIterator' ) | (enumLiteral_22= 'EInvocationTargetException' ) | (enumLiteral_23= 'EJavaClass' ) | (enumLiteral_24= 'EJavaObject' ) | (enumLiteral_25= 'ELong' ) | (enumLiteral_26= 'ELongObject' ) | (enumLiteral_27= 'EMap' ) | (enumLiteral_28= 'EResource' ) | (enumLiteral_29= 'EResourceSet' ) | (enumLiteral_30= 'EShort' ) | (enumLiteral_31= 'EShortObject' ) | (enumLiteral_32= 'EString' ) ) ;
     public final Enumerator ruleType() throws RecognitionException {
         Enumerator current = null;
 
@@ -10627,192 +10813,192 @@
         	enterRule();
 
         try {
-            // InternalHenshin_text.g:4058:2: ( ( (enumLiteral_0= 'EBigDecimal' ) | (enumLiteral_1= 'EBigInteger' ) | (enumLiteral_2= 'EBoolean' ) | (enumLiteral_3= 'EBooleanObject' ) | (enumLiteral_4= 'EByte' ) | (enumLiteral_5= 'EByteArray' ) | (enumLiteral_6= 'EByteObject' ) | (enumLiteral_7= 'EChar' ) | (enumLiteral_8= 'ECharacterObject' ) | (enumLiteral_9= 'EDate' ) | (enumLiteral_10= 'EDiagnosticChain' ) | (enumLiteral_11= 'EDouble' ) | (enumLiteral_12= 'EDoubleObject' ) | (enumLiteral_13= 'EEList' ) | (enumLiteral_14= 'EEnumerator' ) | (enumLiteral_15= 'EFeatureMap' ) | (enumLiteral_16= 'EFeatureMapEntry' ) | (enumLiteral_17= 'EFloat' ) | (enumLiteral_18= 'EFloatObject' ) | (enumLiteral_19= 'EInt' ) | (enumLiteral_20= 'EIntegerObject' ) | (enumLiteral_21= 'ETreeIterator' ) | (enumLiteral_22= 'EInvocationTargetException' ) | (enumLiteral_23= 'EJavaClass' ) | (enumLiteral_24= 'EJavaObject' ) | (enumLiteral_25= 'ELong' ) | (enumLiteral_26= 'ELongObject' ) | (enumLiteral_27= 'EMap' ) | (enumLiteral_28= 'EResource' ) | (enumLiteral_29= 'EResourceSet' ) | (enumLiteral_30= 'EShort' ) | (enumLiteral_31= 'EShortObject' ) | (enumLiteral_32= 'EString' ) ) )
-            // InternalHenshin_text.g:4059:2: ( (enumLiteral_0= 'EBigDecimal' ) | (enumLiteral_1= 'EBigInteger' ) | (enumLiteral_2= 'EBoolean' ) | (enumLiteral_3= 'EBooleanObject' ) | (enumLiteral_4= 'EByte' ) | (enumLiteral_5= 'EByteArray' ) | (enumLiteral_6= 'EByteObject' ) | (enumLiteral_7= 'EChar' ) | (enumLiteral_8= 'ECharacterObject' ) | (enumLiteral_9= 'EDate' ) | (enumLiteral_10= 'EDiagnosticChain' ) | (enumLiteral_11= 'EDouble' ) | (enumLiteral_12= 'EDoubleObject' ) | (enumLiteral_13= 'EEList' ) | (enumLiteral_14= 'EEnumerator' ) | (enumLiteral_15= 'EFeatureMap' ) | (enumLiteral_16= 'EFeatureMapEntry' ) | (enumLiteral_17= 'EFloat' ) | (enumLiteral_18= 'EFloatObject' ) | (enumLiteral_19= 'EInt' ) | (enumLiteral_20= 'EIntegerObject' ) | (enumLiteral_21= 'ETreeIterator' ) | (enumLiteral_22= 'EInvocationTargetException' ) | (enumLiteral_23= 'EJavaClass' ) | (enumLiteral_24= 'EJavaObject' ) | (enumLiteral_25= 'ELong' ) | (enumLiteral_26= 'ELongObject' ) | (enumLiteral_27= 'EMap' ) | (enumLiteral_28= 'EResource' ) | (enumLiteral_29= 'EResourceSet' ) | (enumLiteral_30= 'EShort' ) | (enumLiteral_31= 'EShortObject' ) | (enumLiteral_32= 'EString' ) )
+            // InternalHenshin_text.g:4120:2: ( ( (enumLiteral_0= 'EBigDecimal' ) | (enumLiteral_1= 'EBigInteger' ) | (enumLiteral_2= 'EBoolean' ) | (enumLiteral_3= 'EBooleanObject' ) | (enumLiteral_4= 'EByte' ) | (enumLiteral_5= 'EByteArray' ) | (enumLiteral_6= 'EByteObject' ) | (enumLiteral_7= 'EChar' ) | (enumLiteral_8= 'ECharacterObject' ) | (enumLiteral_9= 'EDate' ) | (enumLiteral_10= 'EDiagnosticChain' ) | (enumLiteral_11= 'EDouble' ) | (enumLiteral_12= 'EDoubleObject' ) | (enumLiteral_13= 'EEList' ) | (enumLiteral_14= 'EEnumerator' ) | (enumLiteral_15= 'EFeatureMap' ) | (enumLiteral_16= 'EFeatureMapEntry' ) | (enumLiteral_17= 'EFloat' ) | (enumLiteral_18= 'EFloatObject' ) | (enumLiteral_19= 'EInt' ) | (enumLiteral_20= 'EIntegerObject' ) | (enumLiteral_21= 'ETreeIterator' ) | (enumLiteral_22= 'EInvocationTargetException' ) | (enumLiteral_23= 'EJavaClass' ) | (enumLiteral_24= 'EJavaObject' ) | (enumLiteral_25= 'ELong' ) | (enumLiteral_26= 'ELongObject' ) | (enumLiteral_27= 'EMap' ) | (enumLiteral_28= 'EResource' ) | (enumLiteral_29= 'EResourceSet' ) | (enumLiteral_30= 'EShort' ) | (enumLiteral_31= 'EShortObject' ) | (enumLiteral_32= 'EString' ) ) )
+            // InternalHenshin_text.g:4121:2: ( (enumLiteral_0= 'EBigDecimal' ) | (enumLiteral_1= 'EBigInteger' ) | (enumLiteral_2= 'EBoolean' ) | (enumLiteral_3= 'EBooleanObject' ) | (enumLiteral_4= 'EByte' ) | (enumLiteral_5= 'EByteArray' ) | (enumLiteral_6= 'EByteObject' ) | (enumLiteral_7= 'EChar' ) | (enumLiteral_8= 'ECharacterObject' ) | (enumLiteral_9= 'EDate' ) | (enumLiteral_10= 'EDiagnosticChain' ) | (enumLiteral_11= 'EDouble' ) | (enumLiteral_12= 'EDoubleObject' ) | (enumLiteral_13= 'EEList' ) | (enumLiteral_14= 'EEnumerator' ) | (enumLiteral_15= 'EFeatureMap' ) | (enumLiteral_16= 'EFeatureMapEntry' ) | (enumLiteral_17= 'EFloat' ) | (enumLiteral_18= 'EFloatObject' ) | (enumLiteral_19= 'EInt' ) | (enumLiteral_20= 'EIntegerObject' ) | (enumLiteral_21= 'ETreeIterator' ) | (enumLiteral_22= 'EInvocationTargetException' ) | (enumLiteral_23= 'EJavaClass' ) | (enumLiteral_24= 'EJavaObject' ) | (enumLiteral_25= 'ELong' ) | (enumLiteral_26= 'ELongObject' ) | (enumLiteral_27= 'EMap' ) | (enumLiteral_28= 'EResource' ) | (enumLiteral_29= 'EResourceSet' ) | (enumLiteral_30= 'EShort' ) | (enumLiteral_31= 'EShortObject' ) | (enumLiteral_32= 'EString' ) )
             {
-            // InternalHenshin_text.g:4059:2: ( (enumLiteral_0= 'EBigDecimal' ) | (enumLiteral_1= 'EBigInteger' ) | (enumLiteral_2= 'EBoolean' ) | (enumLiteral_3= 'EBooleanObject' ) | (enumLiteral_4= 'EByte' ) | (enumLiteral_5= 'EByteArray' ) | (enumLiteral_6= 'EByteObject' ) | (enumLiteral_7= 'EChar' ) | (enumLiteral_8= 'ECharacterObject' ) | (enumLiteral_9= 'EDate' ) | (enumLiteral_10= 'EDiagnosticChain' ) | (enumLiteral_11= 'EDouble' ) | (enumLiteral_12= 'EDoubleObject' ) | (enumLiteral_13= 'EEList' ) | (enumLiteral_14= 'EEnumerator' ) | (enumLiteral_15= 'EFeatureMap' ) | (enumLiteral_16= 'EFeatureMapEntry' ) | (enumLiteral_17= 'EFloat' ) | (enumLiteral_18= 'EFloatObject' ) | (enumLiteral_19= 'EInt' ) | (enumLiteral_20= 'EIntegerObject' ) | (enumLiteral_21= 'ETreeIterator' ) | (enumLiteral_22= 'EInvocationTargetException' ) | (enumLiteral_23= 'EJavaClass' ) | (enumLiteral_24= 'EJavaObject' ) | (enumLiteral_25= 'ELong' ) | (enumLiteral_26= 'ELongObject' ) | (enumLiteral_27= 'EMap' ) | (enumLiteral_28= 'EResource' ) | (enumLiteral_29= 'EResourceSet' ) | (enumLiteral_30= 'EShort' ) | (enumLiteral_31= 'EShortObject' ) | (enumLiteral_32= 'EString' ) )
-            int alt68=33;
+            // InternalHenshin_text.g:4121:2: ( (enumLiteral_0= 'EBigDecimal' ) | (enumLiteral_1= 'EBigInteger' ) | (enumLiteral_2= 'EBoolean' ) | (enumLiteral_3= 'EBooleanObject' ) | (enumLiteral_4= 'EByte' ) | (enumLiteral_5= 'EByteArray' ) | (enumLiteral_6= 'EByteObject' ) | (enumLiteral_7= 'EChar' ) | (enumLiteral_8= 'ECharacterObject' ) | (enumLiteral_9= 'EDate' ) | (enumLiteral_10= 'EDiagnosticChain' ) | (enumLiteral_11= 'EDouble' ) | (enumLiteral_12= 'EDoubleObject' ) | (enumLiteral_13= 'EEList' ) | (enumLiteral_14= 'EEnumerator' ) | (enumLiteral_15= 'EFeatureMap' ) | (enumLiteral_16= 'EFeatureMapEntry' ) | (enumLiteral_17= 'EFloat' ) | (enumLiteral_18= 'EFloatObject' ) | (enumLiteral_19= 'EInt' ) | (enumLiteral_20= 'EIntegerObject' ) | (enumLiteral_21= 'ETreeIterator' ) | (enumLiteral_22= 'EInvocationTargetException' ) | (enumLiteral_23= 'EJavaClass' ) | (enumLiteral_24= 'EJavaObject' ) | (enumLiteral_25= 'ELong' ) | (enumLiteral_26= 'ELongObject' ) | (enumLiteral_27= 'EMap' ) | (enumLiteral_28= 'EResource' ) | (enumLiteral_29= 'EResourceSet' ) | (enumLiteral_30= 'EShort' ) | (enumLiteral_31= 'EShortObject' ) | (enumLiteral_32= 'EString' ) )
+            int alt70=33;
             switch ( input.LA(1) ) {
-            case 70:
-                {
-                alt68=1;
-                }
-                break;
-            case 71:
-                {
-                alt68=2;
-                }
-                break;
-            case 72:
-                {
-                alt68=3;
-                }
-                break;
-            case 73:
-                {
-                alt68=4;
-                }
-                break;
             case 74:
                 {
-                alt68=5;
+                alt70=1;
                 }
                 break;
             case 75:
                 {
-                alt68=6;
+                alt70=2;
                 }
                 break;
             case 76:
                 {
-                alt68=7;
+                alt70=3;
                 }
                 break;
             case 77:
                 {
-                alt68=8;
+                alt70=4;
                 }
                 break;
             case 78:
                 {
-                alt68=9;
+                alt70=5;
                 }
                 break;
             case 79:
                 {
-                alt68=10;
+                alt70=6;
                 }
                 break;
             case 80:
                 {
-                alt68=11;
+                alt70=7;
                 }
                 break;
             case 81:
                 {
-                alt68=12;
+                alt70=8;
                 }
                 break;
             case 82:
                 {
-                alt68=13;
+                alt70=9;
                 }
                 break;
             case 83:
                 {
-                alt68=14;
+                alt70=10;
                 }
                 break;
             case 84:
                 {
-                alt68=15;
+                alt70=11;
                 }
                 break;
             case 85:
                 {
-                alt68=16;
+                alt70=12;
                 }
                 break;
             case 86:
                 {
-                alt68=17;
+                alt70=13;
                 }
                 break;
             case 87:
                 {
-                alt68=18;
+                alt70=14;
                 }
                 break;
             case 88:
                 {
-                alt68=19;
+                alt70=15;
                 }
                 break;
             case 89:
                 {
-                alt68=20;
+                alt70=16;
                 }
                 break;
             case 90:
                 {
-                alt68=21;
+                alt70=17;
                 }
                 break;
             case 91:
                 {
-                alt68=22;
+                alt70=18;
                 }
                 break;
             case 92:
                 {
-                alt68=23;
+                alt70=19;
                 }
                 break;
             case 93:
                 {
-                alt68=24;
+                alt70=20;
                 }
                 break;
             case 94:
                 {
-                alt68=25;
+                alt70=21;
                 }
                 break;
             case 95:
                 {
-                alt68=26;
+                alt70=22;
                 }
                 break;
             case 96:
                 {
-                alt68=27;
+                alt70=23;
                 }
                 break;
             case 97:
                 {
-                alt68=28;
+                alt70=24;
                 }
                 break;
             case 98:
                 {
-                alt68=29;
+                alt70=25;
                 }
                 break;
             case 99:
                 {
-                alt68=30;
+                alt70=26;
                 }
                 break;
             case 100:
                 {
-                alt68=31;
+                alt70=27;
                 }
                 break;
             case 101:
                 {
-                alt68=32;
+                alt70=28;
                 }
                 break;
             case 102:
                 {
-                alt68=33;
+                alt70=29;
+                }
+                break;
+            case 103:
+                {
+                alt70=30;
+                }
+                break;
+            case 104:
+                {
+                alt70=31;
+                }
+                break;
+            case 105:
+                {
+                alt70=32;
+                }
+                break;
+            case 106:
+                {
+                alt70=33;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 68, 0, input);
+                    new NoViableAltException("", 70, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt68) {
+            switch (alt70) {
                 case 1 :
-                    // InternalHenshin_text.g:4060:3: (enumLiteral_0= 'EBigDecimal' )
+                    // InternalHenshin_text.g:4122:3: (enumLiteral_0= 'EBigDecimal' )
                     {
-                    // InternalHenshin_text.g:4060:3: (enumLiteral_0= 'EBigDecimal' )
-                    // InternalHenshin_text.g:4061:4: enumLiteral_0= 'EBigDecimal'
+                    // InternalHenshin_text.g:4122:3: (enumLiteral_0= 'EBigDecimal' )
+                    // InternalHenshin_text.g:4123:4: enumLiteral_0= 'EBigDecimal'
                     {
-                    enumLiteral_0=(Token)match(input,70,FOLLOW_2); 
+                    enumLiteral_0=(Token)match(input,74,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEBigDecimalEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_0, grammarAccess.getTypeAccess().getEBigDecimalEnumLiteralDeclaration_0());
@@ -10824,12 +11010,12 @@
                     }
                     break;
                 case 2 :
-                    // InternalHenshin_text.g:4068:3: (enumLiteral_1= 'EBigInteger' )
+                    // InternalHenshin_text.g:4130:3: (enumLiteral_1= 'EBigInteger' )
                     {
-                    // InternalHenshin_text.g:4068:3: (enumLiteral_1= 'EBigInteger' )
-                    // InternalHenshin_text.g:4069:4: enumLiteral_1= 'EBigInteger'
+                    // InternalHenshin_text.g:4130:3: (enumLiteral_1= 'EBigInteger' )
+                    // InternalHenshin_text.g:4131:4: enumLiteral_1= 'EBigInteger'
                     {
-                    enumLiteral_1=(Token)match(input,71,FOLLOW_2); 
+                    enumLiteral_1=(Token)match(input,75,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEBigIntegerEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_1, grammarAccess.getTypeAccess().getEBigIntegerEnumLiteralDeclaration_1());
@@ -10841,12 +11027,12 @@
                     }
                     break;
                 case 3 :
-                    // InternalHenshin_text.g:4076:3: (enumLiteral_2= 'EBoolean' )
+                    // InternalHenshin_text.g:4138:3: (enumLiteral_2= 'EBoolean' )
                     {
-                    // InternalHenshin_text.g:4076:3: (enumLiteral_2= 'EBoolean' )
-                    // InternalHenshin_text.g:4077:4: enumLiteral_2= 'EBoolean'
+                    // InternalHenshin_text.g:4138:3: (enumLiteral_2= 'EBoolean' )
+                    // InternalHenshin_text.g:4139:4: enumLiteral_2= 'EBoolean'
                     {
-                    enumLiteral_2=(Token)match(input,72,FOLLOW_2); 
+                    enumLiteral_2=(Token)match(input,76,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEBooleanEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_2, grammarAccess.getTypeAccess().getEBooleanEnumLiteralDeclaration_2());
@@ -10858,12 +11044,12 @@
                     }
                     break;
                 case 4 :
-                    // InternalHenshin_text.g:4084:3: (enumLiteral_3= 'EBooleanObject' )
+                    // InternalHenshin_text.g:4146:3: (enumLiteral_3= 'EBooleanObject' )
                     {
-                    // InternalHenshin_text.g:4084:3: (enumLiteral_3= 'EBooleanObject' )
-                    // InternalHenshin_text.g:4085:4: enumLiteral_3= 'EBooleanObject'
+                    // InternalHenshin_text.g:4146:3: (enumLiteral_3= 'EBooleanObject' )
+                    // InternalHenshin_text.g:4147:4: enumLiteral_3= 'EBooleanObject'
                     {
-                    enumLiteral_3=(Token)match(input,73,FOLLOW_2); 
+                    enumLiteral_3=(Token)match(input,77,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEBooleanObjectEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_3, grammarAccess.getTypeAccess().getEBooleanObjectEnumLiteralDeclaration_3());
@@ -10875,12 +11061,12 @@
                     }
                     break;
                 case 5 :
-                    // InternalHenshin_text.g:4092:3: (enumLiteral_4= 'EByte' )
+                    // InternalHenshin_text.g:4154:3: (enumLiteral_4= 'EByte' )
                     {
-                    // InternalHenshin_text.g:4092:3: (enumLiteral_4= 'EByte' )
-                    // InternalHenshin_text.g:4093:4: enumLiteral_4= 'EByte'
+                    // InternalHenshin_text.g:4154:3: (enumLiteral_4= 'EByte' )
+                    // InternalHenshin_text.g:4155:4: enumLiteral_4= 'EByte'
                     {
-                    enumLiteral_4=(Token)match(input,74,FOLLOW_2); 
+                    enumLiteral_4=(Token)match(input,78,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEByteEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_4, grammarAccess.getTypeAccess().getEByteEnumLiteralDeclaration_4());
@@ -10892,12 +11078,12 @@
                     }
                     break;
                 case 6 :
-                    // InternalHenshin_text.g:4100:3: (enumLiteral_5= 'EByteArray' )
+                    // InternalHenshin_text.g:4162:3: (enumLiteral_5= 'EByteArray' )
                     {
-                    // InternalHenshin_text.g:4100:3: (enumLiteral_5= 'EByteArray' )
-                    // InternalHenshin_text.g:4101:4: enumLiteral_5= 'EByteArray'
+                    // InternalHenshin_text.g:4162:3: (enumLiteral_5= 'EByteArray' )
+                    // InternalHenshin_text.g:4163:4: enumLiteral_5= 'EByteArray'
                     {
-                    enumLiteral_5=(Token)match(input,75,FOLLOW_2); 
+                    enumLiteral_5=(Token)match(input,79,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEByteArrayEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_5, grammarAccess.getTypeAccess().getEByteArrayEnumLiteralDeclaration_5());
@@ -10909,12 +11095,12 @@
                     }
                     break;
                 case 7 :
-                    // InternalHenshin_text.g:4108:3: (enumLiteral_6= 'EByteObject' )
+                    // InternalHenshin_text.g:4170:3: (enumLiteral_6= 'EByteObject' )
                     {
-                    // InternalHenshin_text.g:4108:3: (enumLiteral_6= 'EByteObject' )
-                    // InternalHenshin_text.g:4109:4: enumLiteral_6= 'EByteObject'
+                    // InternalHenshin_text.g:4170:3: (enumLiteral_6= 'EByteObject' )
+                    // InternalHenshin_text.g:4171:4: enumLiteral_6= 'EByteObject'
                     {
-                    enumLiteral_6=(Token)match(input,76,FOLLOW_2); 
+                    enumLiteral_6=(Token)match(input,80,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEByteObjectEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_6, grammarAccess.getTypeAccess().getEByteObjectEnumLiteralDeclaration_6());
@@ -10926,12 +11112,12 @@
                     }
                     break;
                 case 8 :
-                    // InternalHenshin_text.g:4116:3: (enumLiteral_7= 'EChar' )
+                    // InternalHenshin_text.g:4178:3: (enumLiteral_7= 'EChar' )
                     {
-                    // InternalHenshin_text.g:4116:3: (enumLiteral_7= 'EChar' )
-                    // InternalHenshin_text.g:4117:4: enumLiteral_7= 'EChar'
+                    // InternalHenshin_text.g:4178:3: (enumLiteral_7= 'EChar' )
+                    // InternalHenshin_text.g:4179:4: enumLiteral_7= 'EChar'
                     {
-                    enumLiteral_7=(Token)match(input,77,FOLLOW_2); 
+                    enumLiteral_7=(Token)match(input,81,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getECharEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_7, grammarAccess.getTypeAccess().getECharEnumLiteralDeclaration_7());
@@ -10943,12 +11129,12 @@
                     }
                     break;
                 case 9 :
-                    // InternalHenshin_text.g:4124:3: (enumLiteral_8= 'ECharacterObject' )
+                    // InternalHenshin_text.g:4186:3: (enumLiteral_8= 'ECharacterObject' )
                     {
-                    // InternalHenshin_text.g:4124:3: (enumLiteral_8= 'ECharacterObject' )
-                    // InternalHenshin_text.g:4125:4: enumLiteral_8= 'ECharacterObject'
+                    // InternalHenshin_text.g:4186:3: (enumLiteral_8= 'ECharacterObject' )
+                    // InternalHenshin_text.g:4187:4: enumLiteral_8= 'ECharacterObject'
                     {
-                    enumLiteral_8=(Token)match(input,78,FOLLOW_2); 
+                    enumLiteral_8=(Token)match(input,82,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getECharacterObjectEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_8, grammarAccess.getTypeAccess().getECharacterObjectEnumLiteralDeclaration_8());
@@ -10960,12 +11146,12 @@
                     }
                     break;
                 case 10 :
-                    // InternalHenshin_text.g:4132:3: (enumLiteral_9= 'EDate' )
+                    // InternalHenshin_text.g:4194:3: (enumLiteral_9= 'EDate' )
                     {
-                    // InternalHenshin_text.g:4132:3: (enumLiteral_9= 'EDate' )
-                    // InternalHenshin_text.g:4133:4: enumLiteral_9= 'EDate'
+                    // InternalHenshin_text.g:4194:3: (enumLiteral_9= 'EDate' )
+                    // InternalHenshin_text.g:4195:4: enumLiteral_9= 'EDate'
                     {
-                    enumLiteral_9=(Token)match(input,79,FOLLOW_2); 
+                    enumLiteral_9=(Token)match(input,83,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEDateEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_9, grammarAccess.getTypeAccess().getEDateEnumLiteralDeclaration_9());
@@ -10977,12 +11163,12 @@
                     }
                     break;
                 case 11 :
-                    // InternalHenshin_text.g:4140:3: (enumLiteral_10= 'EDiagnosticChain' )
+                    // InternalHenshin_text.g:4202:3: (enumLiteral_10= 'EDiagnosticChain' )
                     {
-                    // InternalHenshin_text.g:4140:3: (enumLiteral_10= 'EDiagnosticChain' )
-                    // InternalHenshin_text.g:4141:4: enumLiteral_10= 'EDiagnosticChain'
+                    // InternalHenshin_text.g:4202:3: (enumLiteral_10= 'EDiagnosticChain' )
+                    // InternalHenshin_text.g:4203:4: enumLiteral_10= 'EDiagnosticChain'
                     {
-                    enumLiteral_10=(Token)match(input,80,FOLLOW_2); 
+                    enumLiteral_10=(Token)match(input,84,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEDiagnosticChainEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_10, grammarAccess.getTypeAccess().getEDiagnosticChainEnumLiteralDeclaration_10());
@@ -10994,12 +11180,12 @@
                     }
                     break;
                 case 12 :
-                    // InternalHenshin_text.g:4148:3: (enumLiteral_11= 'EDouble' )
+                    // InternalHenshin_text.g:4210:3: (enumLiteral_11= 'EDouble' )
                     {
-                    // InternalHenshin_text.g:4148:3: (enumLiteral_11= 'EDouble' )
-                    // InternalHenshin_text.g:4149:4: enumLiteral_11= 'EDouble'
+                    // InternalHenshin_text.g:4210:3: (enumLiteral_11= 'EDouble' )
+                    // InternalHenshin_text.g:4211:4: enumLiteral_11= 'EDouble'
                     {
-                    enumLiteral_11=(Token)match(input,81,FOLLOW_2); 
+                    enumLiteral_11=(Token)match(input,85,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEDoubleEnumLiteralDeclaration_11().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_11, grammarAccess.getTypeAccess().getEDoubleEnumLiteralDeclaration_11());
@@ -11011,12 +11197,12 @@
                     }
                     break;
                 case 13 :
-                    // InternalHenshin_text.g:4156:3: (enumLiteral_12= 'EDoubleObject' )
+                    // InternalHenshin_text.g:4218:3: (enumLiteral_12= 'EDoubleObject' )
                     {
-                    // InternalHenshin_text.g:4156:3: (enumLiteral_12= 'EDoubleObject' )
-                    // InternalHenshin_text.g:4157:4: enumLiteral_12= 'EDoubleObject'
+                    // InternalHenshin_text.g:4218:3: (enumLiteral_12= 'EDoubleObject' )
+                    // InternalHenshin_text.g:4219:4: enumLiteral_12= 'EDoubleObject'
                     {
-                    enumLiteral_12=(Token)match(input,82,FOLLOW_2); 
+                    enumLiteral_12=(Token)match(input,86,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEDoubleObjectEnumLiteralDeclaration_12().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_12, grammarAccess.getTypeAccess().getEDoubleObjectEnumLiteralDeclaration_12());
@@ -11028,12 +11214,12 @@
                     }
                     break;
                 case 14 :
-                    // InternalHenshin_text.g:4164:3: (enumLiteral_13= 'EEList' )
+                    // InternalHenshin_text.g:4226:3: (enumLiteral_13= 'EEList' )
                     {
-                    // InternalHenshin_text.g:4164:3: (enumLiteral_13= 'EEList' )
-                    // InternalHenshin_text.g:4165:4: enumLiteral_13= 'EEList'
+                    // InternalHenshin_text.g:4226:3: (enumLiteral_13= 'EEList' )
+                    // InternalHenshin_text.g:4227:4: enumLiteral_13= 'EEList'
                     {
-                    enumLiteral_13=(Token)match(input,83,FOLLOW_2); 
+                    enumLiteral_13=(Token)match(input,87,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEEListEnumLiteralDeclaration_13().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_13, grammarAccess.getTypeAccess().getEEListEnumLiteralDeclaration_13());
@@ -11045,12 +11231,12 @@
                     }
                     break;
                 case 15 :
-                    // InternalHenshin_text.g:4172:3: (enumLiteral_14= 'EEnumerator' )
+                    // InternalHenshin_text.g:4234:3: (enumLiteral_14= 'EEnumerator' )
                     {
-                    // InternalHenshin_text.g:4172:3: (enumLiteral_14= 'EEnumerator' )
-                    // InternalHenshin_text.g:4173:4: enumLiteral_14= 'EEnumerator'
+                    // InternalHenshin_text.g:4234:3: (enumLiteral_14= 'EEnumerator' )
+                    // InternalHenshin_text.g:4235:4: enumLiteral_14= 'EEnumerator'
                     {
-                    enumLiteral_14=(Token)match(input,84,FOLLOW_2); 
+                    enumLiteral_14=(Token)match(input,88,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEEnumeratorEnumLiteralDeclaration_14().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_14, grammarAccess.getTypeAccess().getEEnumeratorEnumLiteralDeclaration_14());
@@ -11062,12 +11248,12 @@
                     }
                     break;
                 case 16 :
-                    // InternalHenshin_text.g:4180:3: (enumLiteral_15= 'EFeatureMap' )
+                    // InternalHenshin_text.g:4242:3: (enumLiteral_15= 'EFeatureMap' )
                     {
-                    // InternalHenshin_text.g:4180:3: (enumLiteral_15= 'EFeatureMap' )
-                    // InternalHenshin_text.g:4181:4: enumLiteral_15= 'EFeatureMap'
+                    // InternalHenshin_text.g:4242:3: (enumLiteral_15= 'EFeatureMap' )
+                    // InternalHenshin_text.g:4243:4: enumLiteral_15= 'EFeatureMap'
                     {
-                    enumLiteral_15=(Token)match(input,85,FOLLOW_2); 
+                    enumLiteral_15=(Token)match(input,89,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEFeatureMapEnumLiteralDeclaration_15().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_15, grammarAccess.getTypeAccess().getEFeatureMapEnumLiteralDeclaration_15());
@@ -11079,12 +11265,12 @@
                     }
                     break;
                 case 17 :
-                    // InternalHenshin_text.g:4188:3: (enumLiteral_16= 'EFeatureMapEntry' )
+                    // InternalHenshin_text.g:4250:3: (enumLiteral_16= 'EFeatureMapEntry' )
                     {
-                    // InternalHenshin_text.g:4188:3: (enumLiteral_16= 'EFeatureMapEntry' )
-                    // InternalHenshin_text.g:4189:4: enumLiteral_16= 'EFeatureMapEntry'
+                    // InternalHenshin_text.g:4250:3: (enumLiteral_16= 'EFeatureMapEntry' )
+                    // InternalHenshin_text.g:4251:4: enumLiteral_16= 'EFeatureMapEntry'
                     {
-                    enumLiteral_16=(Token)match(input,86,FOLLOW_2); 
+                    enumLiteral_16=(Token)match(input,90,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEFeatureMapEntryEnumLiteralDeclaration_16().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_16, grammarAccess.getTypeAccess().getEFeatureMapEntryEnumLiteralDeclaration_16());
@@ -11096,12 +11282,12 @@
                     }
                     break;
                 case 18 :
-                    // InternalHenshin_text.g:4196:3: (enumLiteral_17= 'EFloat' )
+                    // InternalHenshin_text.g:4258:3: (enumLiteral_17= 'EFloat' )
                     {
-                    // InternalHenshin_text.g:4196:3: (enumLiteral_17= 'EFloat' )
-                    // InternalHenshin_text.g:4197:4: enumLiteral_17= 'EFloat'
+                    // InternalHenshin_text.g:4258:3: (enumLiteral_17= 'EFloat' )
+                    // InternalHenshin_text.g:4259:4: enumLiteral_17= 'EFloat'
                     {
-                    enumLiteral_17=(Token)match(input,87,FOLLOW_2); 
+                    enumLiteral_17=(Token)match(input,91,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEFloatEnumLiteralDeclaration_17().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_17, grammarAccess.getTypeAccess().getEFloatEnumLiteralDeclaration_17());
@@ -11113,12 +11299,12 @@
                     }
                     break;
                 case 19 :
-                    // InternalHenshin_text.g:4204:3: (enumLiteral_18= 'EFloatObject' )
+                    // InternalHenshin_text.g:4266:3: (enumLiteral_18= 'EFloatObject' )
                     {
-                    // InternalHenshin_text.g:4204:3: (enumLiteral_18= 'EFloatObject' )
-                    // InternalHenshin_text.g:4205:4: enumLiteral_18= 'EFloatObject'
+                    // InternalHenshin_text.g:4266:3: (enumLiteral_18= 'EFloatObject' )
+                    // InternalHenshin_text.g:4267:4: enumLiteral_18= 'EFloatObject'
                     {
-                    enumLiteral_18=(Token)match(input,88,FOLLOW_2); 
+                    enumLiteral_18=(Token)match(input,92,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEFloatObjectEnumLiteralDeclaration_18().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_18, grammarAccess.getTypeAccess().getEFloatObjectEnumLiteralDeclaration_18());
@@ -11130,12 +11316,12 @@
                     }
                     break;
                 case 20 :
-                    // InternalHenshin_text.g:4212:3: (enumLiteral_19= 'EInt' )
+                    // InternalHenshin_text.g:4274:3: (enumLiteral_19= 'EInt' )
                     {
-                    // InternalHenshin_text.g:4212:3: (enumLiteral_19= 'EInt' )
-                    // InternalHenshin_text.g:4213:4: enumLiteral_19= 'EInt'
+                    // InternalHenshin_text.g:4274:3: (enumLiteral_19= 'EInt' )
+                    // InternalHenshin_text.g:4275:4: enumLiteral_19= 'EInt'
                     {
-                    enumLiteral_19=(Token)match(input,89,FOLLOW_2); 
+                    enumLiteral_19=(Token)match(input,93,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEIntEnumLiteralDeclaration_19().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_19, grammarAccess.getTypeAccess().getEIntEnumLiteralDeclaration_19());
@@ -11147,12 +11333,12 @@
                     }
                     break;
                 case 21 :
-                    // InternalHenshin_text.g:4220:3: (enumLiteral_20= 'EIntegerObject' )
+                    // InternalHenshin_text.g:4282:3: (enumLiteral_20= 'EIntegerObject' )
                     {
-                    // InternalHenshin_text.g:4220:3: (enumLiteral_20= 'EIntegerObject' )
-                    // InternalHenshin_text.g:4221:4: enumLiteral_20= 'EIntegerObject'
+                    // InternalHenshin_text.g:4282:3: (enumLiteral_20= 'EIntegerObject' )
+                    // InternalHenshin_text.g:4283:4: enumLiteral_20= 'EIntegerObject'
                     {
-                    enumLiteral_20=(Token)match(input,90,FOLLOW_2); 
+                    enumLiteral_20=(Token)match(input,94,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEIntegerObjectEnumLiteralDeclaration_20().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_20, grammarAccess.getTypeAccess().getEIntegerObjectEnumLiteralDeclaration_20());
@@ -11164,12 +11350,12 @@
                     }
                     break;
                 case 22 :
-                    // InternalHenshin_text.g:4228:3: (enumLiteral_21= 'ETreeIterator' )
+                    // InternalHenshin_text.g:4290:3: (enumLiteral_21= 'ETreeIterator' )
                     {
-                    // InternalHenshin_text.g:4228:3: (enumLiteral_21= 'ETreeIterator' )
-                    // InternalHenshin_text.g:4229:4: enumLiteral_21= 'ETreeIterator'
+                    // InternalHenshin_text.g:4290:3: (enumLiteral_21= 'ETreeIterator' )
+                    // InternalHenshin_text.g:4291:4: enumLiteral_21= 'ETreeIterator'
                     {
-                    enumLiteral_21=(Token)match(input,91,FOLLOW_2); 
+                    enumLiteral_21=(Token)match(input,95,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getETreeIteratorEnumLiteralDeclaration_21().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_21, grammarAccess.getTypeAccess().getETreeIteratorEnumLiteralDeclaration_21());
@@ -11181,12 +11367,12 @@
                     }
                     break;
                 case 23 :
-                    // InternalHenshin_text.g:4236:3: (enumLiteral_22= 'EInvocationTargetException' )
+                    // InternalHenshin_text.g:4298:3: (enumLiteral_22= 'EInvocationTargetException' )
                     {
-                    // InternalHenshin_text.g:4236:3: (enumLiteral_22= 'EInvocationTargetException' )
-                    // InternalHenshin_text.g:4237:4: enumLiteral_22= 'EInvocationTargetException'
+                    // InternalHenshin_text.g:4298:3: (enumLiteral_22= 'EInvocationTargetException' )
+                    // InternalHenshin_text.g:4299:4: enumLiteral_22= 'EInvocationTargetException'
                     {
-                    enumLiteral_22=(Token)match(input,92,FOLLOW_2); 
+                    enumLiteral_22=(Token)match(input,96,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEInvocationTargetExceptionEnumLiteralDeclaration_22().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_22, grammarAccess.getTypeAccess().getEInvocationTargetExceptionEnumLiteralDeclaration_22());
@@ -11198,12 +11384,12 @@
                     }
                     break;
                 case 24 :
-                    // InternalHenshin_text.g:4244:3: (enumLiteral_23= 'EJavaClass' )
+                    // InternalHenshin_text.g:4306:3: (enumLiteral_23= 'EJavaClass' )
                     {
-                    // InternalHenshin_text.g:4244:3: (enumLiteral_23= 'EJavaClass' )
-                    // InternalHenshin_text.g:4245:4: enumLiteral_23= 'EJavaClass'
+                    // InternalHenshin_text.g:4306:3: (enumLiteral_23= 'EJavaClass' )
+                    // InternalHenshin_text.g:4307:4: enumLiteral_23= 'EJavaClass'
                     {
-                    enumLiteral_23=(Token)match(input,93,FOLLOW_2); 
+                    enumLiteral_23=(Token)match(input,97,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEJavaClassEnumLiteralDeclaration_23().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_23, grammarAccess.getTypeAccess().getEJavaClassEnumLiteralDeclaration_23());
@@ -11215,12 +11401,12 @@
                     }
                     break;
                 case 25 :
-                    // InternalHenshin_text.g:4252:3: (enumLiteral_24= 'EJavaObject' )
+                    // InternalHenshin_text.g:4314:3: (enumLiteral_24= 'EJavaObject' )
                     {
-                    // InternalHenshin_text.g:4252:3: (enumLiteral_24= 'EJavaObject' )
-                    // InternalHenshin_text.g:4253:4: enumLiteral_24= 'EJavaObject'
+                    // InternalHenshin_text.g:4314:3: (enumLiteral_24= 'EJavaObject' )
+                    // InternalHenshin_text.g:4315:4: enumLiteral_24= 'EJavaObject'
                     {
-                    enumLiteral_24=(Token)match(input,94,FOLLOW_2); 
+                    enumLiteral_24=(Token)match(input,98,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEJavaObjectEnumLiteralDeclaration_24().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_24, grammarAccess.getTypeAccess().getEJavaObjectEnumLiteralDeclaration_24());
@@ -11232,12 +11418,12 @@
                     }
                     break;
                 case 26 :
-                    // InternalHenshin_text.g:4260:3: (enumLiteral_25= 'ELong' )
+                    // InternalHenshin_text.g:4322:3: (enumLiteral_25= 'ELong' )
                     {
-                    // InternalHenshin_text.g:4260:3: (enumLiteral_25= 'ELong' )
-                    // InternalHenshin_text.g:4261:4: enumLiteral_25= 'ELong'
+                    // InternalHenshin_text.g:4322:3: (enumLiteral_25= 'ELong' )
+                    // InternalHenshin_text.g:4323:4: enumLiteral_25= 'ELong'
                     {
-                    enumLiteral_25=(Token)match(input,95,FOLLOW_2); 
+                    enumLiteral_25=(Token)match(input,99,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getELongEnumLiteralDeclaration_25().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_25, grammarAccess.getTypeAccess().getELongEnumLiteralDeclaration_25());
@@ -11249,12 +11435,12 @@
                     }
                     break;
                 case 27 :
-                    // InternalHenshin_text.g:4268:3: (enumLiteral_26= 'ELongObject' )
+                    // InternalHenshin_text.g:4330:3: (enumLiteral_26= 'ELongObject' )
                     {
-                    // InternalHenshin_text.g:4268:3: (enumLiteral_26= 'ELongObject' )
-                    // InternalHenshin_text.g:4269:4: enumLiteral_26= 'ELongObject'
+                    // InternalHenshin_text.g:4330:3: (enumLiteral_26= 'ELongObject' )
+                    // InternalHenshin_text.g:4331:4: enumLiteral_26= 'ELongObject'
                     {
-                    enumLiteral_26=(Token)match(input,96,FOLLOW_2); 
+                    enumLiteral_26=(Token)match(input,100,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getELongObjectEnumLiteralDeclaration_26().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_26, grammarAccess.getTypeAccess().getELongObjectEnumLiteralDeclaration_26());
@@ -11266,12 +11452,12 @@
                     }
                     break;
                 case 28 :
-                    // InternalHenshin_text.g:4276:3: (enumLiteral_27= 'EMap' )
+                    // InternalHenshin_text.g:4338:3: (enumLiteral_27= 'EMap' )
                     {
-                    // InternalHenshin_text.g:4276:3: (enumLiteral_27= 'EMap' )
-                    // InternalHenshin_text.g:4277:4: enumLiteral_27= 'EMap'
+                    // InternalHenshin_text.g:4338:3: (enumLiteral_27= 'EMap' )
+                    // InternalHenshin_text.g:4339:4: enumLiteral_27= 'EMap'
                     {
-                    enumLiteral_27=(Token)match(input,97,FOLLOW_2); 
+                    enumLiteral_27=(Token)match(input,101,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEMapEnumLiteralDeclaration_27().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_27, grammarAccess.getTypeAccess().getEMapEnumLiteralDeclaration_27());
@@ -11283,12 +11469,12 @@
                     }
                     break;
                 case 29 :
-                    // InternalHenshin_text.g:4284:3: (enumLiteral_28= 'EResource' )
+                    // InternalHenshin_text.g:4346:3: (enumLiteral_28= 'EResource' )
                     {
-                    // InternalHenshin_text.g:4284:3: (enumLiteral_28= 'EResource' )
-                    // InternalHenshin_text.g:4285:4: enumLiteral_28= 'EResource'
+                    // InternalHenshin_text.g:4346:3: (enumLiteral_28= 'EResource' )
+                    // InternalHenshin_text.g:4347:4: enumLiteral_28= 'EResource'
                     {
-                    enumLiteral_28=(Token)match(input,98,FOLLOW_2); 
+                    enumLiteral_28=(Token)match(input,102,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEResourceEnumLiteralDeclaration_28().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_28, grammarAccess.getTypeAccess().getEResourceEnumLiteralDeclaration_28());
@@ -11300,12 +11486,12 @@
                     }
                     break;
                 case 30 :
-                    // InternalHenshin_text.g:4292:3: (enumLiteral_29= 'EResourceSet' )
+                    // InternalHenshin_text.g:4354:3: (enumLiteral_29= 'EResourceSet' )
                     {
-                    // InternalHenshin_text.g:4292:3: (enumLiteral_29= 'EResourceSet' )
-                    // InternalHenshin_text.g:4293:4: enumLiteral_29= 'EResourceSet'
+                    // InternalHenshin_text.g:4354:3: (enumLiteral_29= 'EResourceSet' )
+                    // InternalHenshin_text.g:4355:4: enumLiteral_29= 'EResourceSet'
                     {
-                    enumLiteral_29=(Token)match(input,99,FOLLOW_2); 
+                    enumLiteral_29=(Token)match(input,103,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEResourceSetEnumLiteralDeclaration_29().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_29, grammarAccess.getTypeAccess().getEResourceSetEnumLiteralDeclaration_29());
@@ -11317,12 +11503,12 @@
                     }
                     break;
                 case 31 :
-                    // InternalHenshin_text.g:4300:3: (enumLiteral_30= 'EShort' )
+                    // InternalHenshin_text.g:4362:3: (enumLiteral_30= 'EShort' )
                     {
-                    // InternalHenshin_text.g:4300:3: (enumLiteral_30= 'EShort' )
-                    // InternalHenshin_text.g:4301:4: enumLiteral_30= 'EShort'
+                    // InternalHenshin_text.g:4362:3: (enumLiteral_30= 'EShort' )
+                    // InternalHenshin_text.g:4363:4: enumLiteral_30= 'EShort'
                     {
-                    enumLiteral_30=(Token)match(input,100,FOLLOW_2); 
+                    enumLiteral_30=(Token)match(input,104,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEShortEnumLiteralDeclaration_30().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_30, grammarAccess.getTypeAccess().getEShortEnumLiteralDeclaration_30());
@@ -11334,12 +11520,12 @@
                     }
                     break;
                 case 32 :
-                    // InternalHenshin_text.g:4308:3: (enumLiteral_31= 'EShortObject' )
+                    // InternalHenshin_text.g:4370:3: (enumLiteral_31= 'EShortObject' )
                     {
-                    // InternalHenshin_text.g:4308:3: (enumLiteral_31= 'EShortObject' )
-                    // InternalHenshin_text.g:4309:4: enumLiteral_31= 'EShortObject'
+                    // InternalHenshin_text.g:4370:3: (enumLiteral_31= 'EShortObject' )
+                    // InternalHenshin_text.g:4371:4: enumLiteral_31= 'EShortObject'
                     {
-                    enumLiteral_31=(Token)match(input,101,FOLLOW_2); 
+                    enumLiteral_31=(Token)match(input,105,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEShortObjectEnumLiteralDeclaration_31().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_31, grammarAccess.getTypeAccess().getEShortObjectEnumLiteralDeclaration_31());
@@ -11351,12 +11537,12 @@
                     }
                     break;
                 case 33 :
-                    // InternalHenshin_text.g:4316:3: (enumLiteral_32= 'EString' )
+                    // InternalHenshin_text.g:4378:3: (enumLiteral_32= 'EString' )
                     {
-                    // InternalHenshin_text.g:4316:3: (enumLiteral_32= 'EString' )
-                    // InternalHenshin_text.g:4317:4: enumLiteral_32= 'EString'
+                    // InternalHenshin_text.g:4378:3: (enumLiteral_32= 'EString' )
+                    // InternalHenshin_text.g:4379:4: enumLiteral_32= 'EString'
                     {
-                    enumLiteral_32=(Token)match(input,102,FOLLOW_2); 
+                    enumLiteral_32=(Token)match(input,106,FOLLOW_2); 
 
                     				current = grammarAccess.getTypeAccess().getEStringEnumLiteralDeclaration_32().getEnumLiteral().getInstance();
                     				newLeafNode(enumLiteral_32, grammarAccess.getTypeAccess().getEStringEnumLiteralDeclaration_32());
@@ -11391,17 +11577,16 @@
     // Delegated rules
 
 
-    protected DFA67 dfa67 = new DFA67(this);
+    protected DFA68 dfa68 = new DFA68(this);
     static final String dfa_1s = "\14\uffff";
-    static final String dfa_2s = "\1\uffff\1\7\10\uffff\1\13\1\uffff";
-    static final String dfa_3s = "\2\4\6\uffff\1\4\1\uffff\1\4\1\uffff";
-    static final String dfa_4s = "\1\73\1\105\6\uffff\1\4\1\uffff\1\105\1\uffff";
-    static final String dfa_5s = "\2\uffff\1\4\1\5\1\6\1\7\1\10\1\1\1\uffff\1\2\1\uffff\1\3";
+    static final String dfa_2s = "\1\uffff\1\11\10\uffff\1\13\1\uffff";
+    static final String dfa_3s = "\2\4\5\uffff\1\4\2\uffff\1\4\1\uffff";
+    static final String dfa_4s = "\1\73\1\105\5\uffff\1\4\2\uffff\1\105\1\uffff";
+    static final String dfa_5s = "\2\uffff\1\4\1\5\1\6\1\7\1\10\1\uffff\1\2\1\1\1\uffff\1\3";
     static final String dfa_6s = "\14\uffff}>";
     static final String[] dfa_7s = {
             "\1\1\1\2\1\3\1\4\1\5\61\uffff\2\6",
-            "\1\7\11\uffff\1\10\1\uffff\1\11\2\7\1\uffff\1\7\6\uffff\1\7\1\uffff\5\7\6\uffff\1\7\3\uffff\1\7\1\uffff\1\7\15\uffff\12\7",
-            "",
+            "\1\11\11\uffff\1\7\1\uffff\1\10\2\11\1\uffff\1\11\6\uffff\1\11\1\uffff\5\11\6\uffff\1\11\3\uffff\1\11\1\uffff\1\11\15\uffff\12\11",
             "",
             "",
             "",
@@ -11409,7 +11594,8 @@
             "",
             "\1\12",
             "",
-            "\1\13\11\uffff\1\11\1\uffff\1\11\2\13\1\uffff\1\13\6\uffff\1\13\1\uffff\5\13\6\uffff\1\13\3\uffff\1\13\1\uffff\1\13\15\uffff\12\13",
+            "",
+            "\1\13\11\uffff\1\10\1\uffff\1\10\2\13\1\uffff\1\13\6\uffff\1\13\1\uffff\5\13\6\uffff\1\13\3\uffff\1\13\1\uffff\1\13\15\uffff\12\13",
             ""
     };
 
@@ -11421,11 +11607,11 @@
     static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
     static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
 
-    class DFA67 extends DFA {
+    class DFA68 extends DFA {
 
-        public DFA67(BaseRecognizer recognizer) {
+        public DFA68(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 67;
+            this.decisionNumber = 68;
             this.eot = dfa_1;
             this.eof = dfa_2;
             this.min = dfa_3;
@@ -11435,7 +11621,7 @@
             this.transition = dfa_7;
         }
         public String getDescription() {
-            return "3734:2: ( ( () ( (otherlv_1= RULE_ID ) ) ) | ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' ) | ( () ( (lv_value_10_0= ruleJavaAttribute ) ) ) | ( () ( (lv_value_12_0= RULE_STRING ) ) ) | ( () ( (lv_value_14_0= RULE_DECIMAL ) ) ) | ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) ) | ( () ( (lv_value_18_0= RULE_INT ) ) ) | ( () ( (lv_value_20_0= ruleEBoolean ) ) ) )";
+            return "3753:2: ( ( () ( (otherlv_1= RULE_ID ) ) ) | ( () ( (lv_value_3_0= ruleEString ) ) otherlv_4= '(' ( ( (lv_javaParameter_5_0= ruleExpression ) ) (otherlv_6= ',' ( (lv_javaParameter_7_0= ruleExpression ) ) )* )? otherlv_8= ')' ) | ( () ( (lv_value_10_0= ruleJavaAttribute ) ) ) | ( () ( (lv_value_12_0= RULE_STRING ) ) ) | ( () ( (lv_value_14_0= RULE_DECIMAL ) ) ) | ( () ( (lv_value_16_0= RULE_NEGATIVE ) ) ) | ( () ( (lv_value_18_0= RULE_INT ) ) ) | ( () ( (lv_value_20_0= ruleEBoolean ) ) ) )";
         }
     }
  
@@ -11447,45 +11633,47 @@
     public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000010L});
     public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000004002L});
     public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000010000L});
-    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000040010L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000040010L,0x00000000000003C0L});
     public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000060000L});
-    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000080000L});
-    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000013C00000L});
-    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000013D00000L});
-    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x039E000000080010L});
-    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x039E000000180010L});
-    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0C00000000000000L});
-    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0C008000000101F0L});
-    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000008020000L});
-    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x00000667E0100000L});
-    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x00000003E0000010L});
-    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000002000000000L});
-    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000080002L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x00000103E0100010L});
-    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000008000000000L});
-    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000080000000000L});
-    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000800000010010L});
-    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0001000000000000L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0001000000100000L});
-    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000300000000002L});
-    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000400000000002L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000046400100000L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000100010L});
-    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x039E000000080012L});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x039E0000000C0010L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0020000000000000L});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0040000000000002L});
-    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000010L,0x0000007FFFFFFFC0L});
-    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000100000000002L});
-    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x3000000000000002L});
-    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0xC000000000000002L,0x0000000000000003L});
-    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000002L,0x000000000000000CL});
-    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000030L});
-    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0C008000000501F0L});
-    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000010L,0x00000000000003C0L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000013C00000L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000013D00000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x039E000000080010L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x039E000000180010L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0C00000000000000L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0C008000000101F0L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000008020000L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x00000667E0100000L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x00000003E0000010L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000800000000L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000002000000000L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000080002L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x00000103E0100010L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000800000010010L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0001000000000000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0001000000100000L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000300000000002L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000400000000002L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000046400100000L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000100010L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000040010L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x039E000000080012L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x039E0000000C0010L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0020000000000000L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0040000000000002L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000010L,0x000007FFFFFFFC00L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000100000000002L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x3000000000000002L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0xC000000000000002L,0x0000000000000003L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000002L,0x000000000000000CL});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000030L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0C008000000501F0L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000004000L});
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/serializer/Henshin_textSemanticSequencer.java b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/serializer/Henshin_textSemanticSequencer.java
index f5cc572..a86fece 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/serializer/Henshin_textSemanticSequencer.java
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/serializer/Henshin_textSemanticSequencer.java
@@ -1099,19 +1099,10 @@
 	 *     Parameter returns Parameter
 	 *
 	 * Constraint:
-	 *     (name=ID type=ParameterType)
+	 *     (kind=ParameterKindRule? name=ID type=ParameterType)
 	 */
 	protected void sequence_Parameter(ISerializationContext context, org.eclipse.emf.henshin.text.henshin_text.Parameter semanticObject) {
-		if (errorAcceptor != null) {
-			if (transientValues.isValueTransient(semanticObject, Henshin_textPackage.Literals.PARAMETER__NAME) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, Henshin_textPackage.Literals.PARAMETER__NAME));
-			if (transientValues.isValueTransient(semanticObject, Henshin_textPackage.Literals.PARAMETER__TYPE) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, Henshin_textPackage.Literals.PARAMETER__TYPE));
-		}
-		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
-		feeder.accept(grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0(), semanticObject.getName());
-		feeder.accept(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_2_0(), semanticObject.getType());
-		feeder.finish();
+		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
diff --git a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/services/Henshin_textGrammarAccess.java b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/services/Henshin_textGrammarAccess.java
index 7f227ff..9b8011f 100644
--- a/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/services/Henshin_textGrammarAccess.java
+++ b/plugins/org.eclipse.emf.henshin.text/src-gen/org/eclipse/emf/henshin/text/services/Henshin_textGrammarAccess.java
@@ -1943,34 +1943,42 @@
 	public class ParameterElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.emf.henshin.text.Henshin_text.Parameter");
 		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
-		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
-		private final Keyword cColonKeyword_1 = (Keyword)cGroup.eContents().get(1);
-		private final Assignment cTypeAssignment_2 = (Assignment)cGroup.eContents().get(2);
-		private final RuleCall cTypeParameterTypeParserRuleCall_2_0 = (RuleCall)cTypeAssignment_2.eContents().get(0);
+		private final Assignment cKindAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cKindParameterKindRuleEnumRuleCall_0_0 = (RuleCall)cKindAssignment_0.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cTypeParameterTypeParserRuleCall_3_0 = (RuleCall)cTypeAssignment_3.eContents().get(0);
 		
 		////parameter
 		//Parameter:
-		//	name=ID ':' type=ParameterType;
+		//	kind=ParameterKindRule? name=ID ':' type=ParameterType;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//name=ID ':' type=ParameterType
+		//kind=ParameterKindRule? name=ID ':' type=ParameterType
 		public Group getGroup() { return cGroup; }
 		
+		//kind=ParameterKindRule?
+		public Assignment getKindAssignment_0() { return cKindAssignment_0; }
+		
+		//ParameterKindRule
+		public RuleCall getKindParameterKindRuleEnumRuleCall_0_0() { return cKindParameterKindRuleEnumRuleCall_0_0; }
+		
 		//name=ID
-		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
 		
 		//ID
-		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
 		
 		//':'
-		public Keyword getColonKeyword_1() { return cColonKeyword_1; }
+		public Keyword getColonKeyword_2() { return cColonKeyword_2; }
 		
 		//type=ParameterType
-		public Assignment getTypeAssignment_2() { return cTypeAssignment_2; }
+		public Assignment getTypeAssignment_3() { return cTypeAssignment_3; }
 		
 		//ParameterType
-		public RuleCall getTypeParameterTypeParserRuleCall_2_0() { return cTypeParameterTypeParserRuleCall_2_0; }
+		public RuleCall getTypeParameterTypeParserRuleCall_3_0() { return cTypeParameterTypeParserRuleCall_3_0; }
 	}
 	public class ParameterTypeElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.emf.henshin.text.Henshin_text.ParameterType");
@@ -2586,6 +2594,100 @@
 		public RuleCall getIDTerminalRuleCall_2() { return cIDTerminalRuleCall_2; }
 	}
 	
+	public class ParameterKindElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.emf.henshin.text.Henshin_text.ParameterKind");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cUNKNOWNEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cUNKNOWNUNKNOWNKeyword_0_0 = (Keyword)cUNKNOWNEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cINEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cININKeyword_1_0 = (Keyword)cINEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cOUTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cOUTOUTKeyword_2_0 = (Keyword)cOUTEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cINOUTEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cINOUTINOUTKeyword_3_0 = (Keyword)cINOUTEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cVAREnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cVARVARKeyword_4_0 = (Keyword)cVAREnumLiteralDeclaration_4.eContents().get(0);
+		
+		//enum ParameterKind:
+		//	UNKNOWN | IN | OUT | INOUT | VAR;
+		public EnumRule getRule() { return rule; }
+		
+		//UNKNOWN | IN | OUT | INOUT | VAR
+		public Alternatives getAlternatives() { return cAlternatives; }
+		
+		//UNKNOWN
+		public EnumLiteralDeclaration getUNKNOWNEnumLiteralDeclaration_0() { return cUNKNOWNEnumLiteralDeclaration_0; }
+		
+		//"UNKNOWN"
+		public Keyword getUNKNOWNUNKNOWNKeyword_0_0() { return cUNKNOWNUNKNOWNKeyword_0_0; }
+		
+		//IN
+		public EnumLiteralDeclaration getINEnumLiteralDeclaration_1() { return cINEnumLiteralDeclaration_1; }
+		
+		//"IN"
+		public Keyword getININKeyword_1_0() { return cININKeyword_1_0; }
+		
+		//OUT
+		public EnumLiteralDeclaration getOUTEnumLiteralDeclaration_2() { return cOUTEnumLiteralDeclaration_2; }
+		
+		//"OUT"
+		public Keyword getOUTOUTKeyword_2_0() { return cOUTOUTKeyword_2_0; }
+		
+		//INOUT
+		public EnumLiteralDeclaration getINOUTEnumLiteralDeclaration_3() { return cINOUTEnumLiteralDeclaration_3; }
+		
+		//"INOUT"
+		public Keyword getINOUTINOUTKeyword_3_0() { return cINOUTINOUTKeyword_3_0; }
+		
+		//VAR
+		public EnumLiteralDeclaration getVAREnumLiteralDeclaration_4() { return cVAREnumLiteralDeclaration_4; }
+		
+		//"VAR"
+		public Keyword getVARVARKeyword_4_0() { return cVARVARKeyword_4_0; }
+	}
+	public class ParameterKindRuleElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.emf.henshin.text.Henshin_text.ParameterKindRule");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cINEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cININKeyword_0_0 = (Keyword)cINEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cOUTEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cOUTOUTKeyword_1_0 = (Keyword)cOUTEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cINOUTEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cINOUTINOUTKeyword_2_0 = (Keyword)cINOUTEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cVAREnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cVARVARKeyword_3_0 = (Keyword)cVAREnumLiteralDeclaration_3.eContents().get(0);
+		
+		//enum ParameterKindRule returns ParameterKind:
+		//	IN | OUT | INOUT | VAR;
+		public EnumRule getRule() { return rule; }
+		
+		//IN | OUT | INOUT | VAR
+		public Alternatives getAlternatives() { return cAlternatives; }
+		
+		//IN
+		public EnumLiteralDeclaration getINEnumLiteralDeclaration_0() { return cINEnumLiteralDeclaration_0; }
+		
+		//'IN'
+		public Keyword getININKeyword_0_0() { return cININKeyword_0_0; }
+		
+		//OUT
+		public EnumLiteralDeclaration getOUTEnumLiteralDeclaration_1() { return cOUTEnumLiteralDeclaration_1; }
+		
+		//'OUT'
+		public Keyword getOUTOUTKeyword_1_0() { return cOUTOUTKeyword_1_0; }
+		
+		//INOUT
+		public EnumLiteralDeclaration getINOUTEnumLiteralDeclaration_2() { return cINOUTEnumLiteralDeclaration_2; }
+		
+		//'INOUT'
+		public Keyword getINOUTINOUTKeyword_2_0() { return cINOUTINOUTKeyword_2_0; }
+		
+		//VAR
+		public EnumLiteralDeclaration getVAREnumLiteralDeclaration_3() { return cVAREnumLiteralDeclaration_3; }
+		
+		//'VAR'
+		public Keyword getVARVARKeyword_3_0() { return cVARVARKeyword_3_0; }
+	}
 	public class TypeElements extends AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.emf.henshin.text.Henshin_text.Type");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
@@ -2923,6 +3025,8 @@
 	private final IteratedUnitElements pIteratedUnit;
 	private final LoopUnitElements pLoopUnit;
 	private final ParameterElements pParameter;
+	private final ParameterKindElements eParameterKind;
+	private final ParameterKindRuleElements eParameterKindRule;
 	private final ParameterTypeElements pParameterType;
 	private final TypeElements eType;
 	private final TerminalRule tDECIMAL;
@@ -2992,6 +3096,8 @@
 		this.pIteratedUnit = new IteratedUnitElements();
 		this.pLoopUnit = new LoopUnitElements();
 		this.pParameter = new ParameterElements();
+		this.eParameterKind = new ParameterKindElements();
+		this.eParameterKindRule = new ParameterKindRuleElements();
 		this.pParameterType = new ParameterTypeElements();
 		this.eType = new TypeElements();
 		this.tDECIMAL = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.emf.henshin.text.Henshin_text.DECIMAL");
@@ -3524,7 +3630,7 @@
 	
 	////parameter
 	//Parameter:
-	//	name=ID ':' type=ParameterType;
+	//	kind=ParameterKindRule? name=ID ':' type=ParameterType;
 	public ParameterElements getParameterAccess() {
 		return pParameter;
 	}
@@ -3533,6 +3639,26 @@
 		return getParameterAccess().getRule();
 	}
 	
+	//enum ParameterKind:
+	//	UNKNOWN | IN | OUT | INOUT | VAR;
+	public ParameterKindElements getParameterKindAccess() {
+		return eParameterKind;
+	}
+	
+	public EnumRule getParameterKindRule() {
+		return getParameterKindAccess().getRule();
+	}
+	
+	//enum ParameterKindRule returns ParameterKind:
+	//	IN | OUT | INOUT | VAR;
+	public ParameterKindRuleElements getParameterKindRuleAccess() {
+		return eParameterKindRule;
+	}
+	
+	public EnumRule getParameterKindRuleRule() {
+		return getParameterKindRuleAccess().getRule();
+	}
+	
 	////parameter types
 	//ParameterType:
 	//	enumType=Type | type=[ecore::EClass|EString];
diff --git a/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/GenerateHenshin_text.mwe2 b/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/GenerateHenshin_text.mwe2
index fba4912..d0bc9c0 100644
--- a/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/GenerateHenshin_text.mwe2
+++ b/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/GenerateHenshin_text.mwe2
@@ -13,13 +13,13 @@
 				baseName = "org.eclipse.emf.henshin.text"
 				rootPath = rootPath
 				runtimeTest = {
-					enabled = true
+					enabled = false
 				}
 				eclipsePlugin = {
 					enabled = true
 				}
 				eclipsePluginTest = {
-					enabled = true
+					enabled = false
 				}
 				createEclipseMetaData = true
 			}
diff --git a/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/Henshin_text.xtext b/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/Henshin_text.xtext
index 77e8cb6..ff6b8e8 100644
--- a/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/Henshin_text.xtext
+++ b/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/Henshin_text.xtext
@@ -266,7 +266,18 @@
 
 //parameter
 Parameter:
-	name=ID':'type=ParameterType
+	(kind=ParameterKindRule)? name=ID':'type=ParameterType
+;
+
+// this enums is just used to ensure that the generated ecore file includes an unknown default
+// whereas the actual used grammar rule (ParameterKindSpec) only supports the IN, OUT, INOUT, VAR kinds
+enum ParameterKind:
+	UNKNOWN | IN  | OUT  | INOUT | VAR 
+;
+
+
+enum ParameterKindRule returns ParameterKind:
+	IN = 'IN' | OUT = 'OUT' | INOUT = 'INOUT' | VAR = 'VAR'
 ;
 
 //parameter types
diff --git a/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/scoping/Henshin_textImportedNamespaceAwareLocalScopeProvider.java b/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/scoping/Henshin_textImportedNamespaceAwareLocalScopeProvider.java
index 22c528c..3cea88a 100644
--- a/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/scoping/Henshin_textImportedNamespaceAwareLocalScopeProvider.java
+++ b/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/scoping/Henshin_textImportedNamespaceAwareLocalScopeProvider.java
@@ -37,227 +37,256 @@
 			Model model=(Model) context;
 			for(EPackageImport ePackageImport:model.getEPackageimports()){
 				List<INode> nodes = NodeModelUtils.findNodesForFeature(ePackageImport, Henshin_textPackage.Literals.EPACKAGE_IMPORT__REF);
-				INode inode = nodes.get(0);
-				String packageName = NodeModelUtils.getTokenText(inode);
-				importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
+				if(nodes.size()>0){
+					INode inode = nodes.get(0);
+					String packageName = NodeModelUtils.getTokenText(inode);
+					importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
+				}
 			}
 		}
 		if(context instanceof Node){
 			Node node=(Node) context;
 			List<INode> nodes = NodeModelUtils.findNodesForFeature(node, Henshin_textPackage.Literals.NODE__NODETYPE);
-	        INode inode = nodes.get(0);
-	        String packageName = NodeModelUtils.getTokenText(inode);
-			importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
-			String splitPackageName[]=packageName.split("\\.");
-			if(splitPackageName.length==1){ 
-				splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
+			if(nodes.size()>0){
+				INode inode = nodes.get(0);
+				String packageName = NodeModelUtils.getTokenText(inode);
+				importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
+				String splitPackageName[]=packageName.split("\\.");
+				if(splitPackageName.length==1){ 
+					splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
+				}
+				addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
 			}
-			addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
 		}
 		if(context instanceof ConditionNode){
 			ConditionNode node=(ConditionNode) context;
 			List<INode> nodes = NodeModelUtils.findNodesForFeature(node, Henshin_textPackage.Literals.CONDITION_NODE__TYPE);
-	        INode inode = nodes.get(0);
-	        String packageName = NodeModelUtils.getTokenText(inode);
-			importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
-			String splitPackageName[]=packageName.split("\\.");
-			if(splitPackageName.length==1){ 
-				splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
+			if(nodes.size()>0){
+				INode inode = nodes.get(0);
+				String packageName = NodeModelUtils.getTokenText(inode);
+				importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
+				String splitPackageName[]=packageName.split("\\.");
+				if(splitPackageName.length==1){ 
+					splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
+				}
+				addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
 			}
-			addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
 		}
 		if(context instanceof ConditionReuseNode){
 			ConditionReuseNode node=(ConditionReuseNode) context;
 			List<INode> nodes = NodeModelUtils.findNodesForFeature(node, Henshin_textPackage.Literals.CONDITION_REUSE_NODE__NAME);
-			INode inode = nodes.get(0);
-	        String nodeName = NodeModelUtils.getTokenText(inode);
+			if(nodes.size()>0){
+				INode inode = nodes.get(0);
+				String nodeName = NodeModelUtils.getTokenText(inode);
 	        
-			Node reusedNode=null;
-			ConditionNode reusedConNode=null;
-			boolean nodeFound=false;
-			EObject container=node.eContainer().eContainer();
-			while (nodeFound!=true){
-				if(container instanceof Graph){
-					Graph graph=(Graph) container;
-					for(GraphElements element:graph.getGraphElements()){
-						if(element instanceof Node){
-							if(((Node) element).getName().equals(nodeName)){
-								reusedNode=(Node) element;
-								nodeFound=true;
+				Node reusedNode=null;
+				ConditionNode reusedConNode=null;
+				boolean nodeFound=false;
+				EObject container=node.eContainer().eContainer();
+				while (nodeFound!=true){
+					if(container instanceof Graph){
+						Graph graph=(Graph) container;
+						for(GraphElements element:graph.getGraphElements()){
+							if(element instanceof Node){
+								if(((Node) element).getName().equals(nodeName)){
+									reusedNode=(Node) element;
+									nodeFound=true;
+								}
+							}
+						}
+					}else if(container instanceof ConditionGraph){
+						ConditionGraph graph=(ConditionGraph) container;
+						for(ConditionGraphElements element:graph.getConditionGraphElements()){
+							if(element instanceof ConditionNode){
+								if(((ConditionNode) element).getName().equals(nodeName)){
+									reusedConNode=(ConditionNode) element;
+									nodeFound=true;
+								}
 							}
 						}
 					}
-				}else if(container instanceof ConditionGraph){
-					ConditionGraph graph=(ConditionGraph) container;
-					for(ConditionGraphElements element:graph.getConditionGraphElements()){
-						if(element instanceof ConditionNode){
-							if(((ConditionNode) element).getName().equals(nodeName)){
-								reusedConNode=(ConditionNode) element;
-								nodeFound=true;
-							}
-						}
+					container=container.eContainer();
+					if(container instanceof Model){
+						break;
 					}
 				}
-				container=container.eContainer();
-				if(container instanceof Model){
-					break;
-				}
+				if((reusedNode!=null)&&(reusedConNode==null)){
+					List<INode> reNodes = NodeModelUtils.findNodesForFeature(reusedNode, Henshin_textPackage.Literals.NODE__NODETYPE);
+					if(reNodes.size()>0){
+						INode reInode = reNodes.get(0);
+						String packageName = NodeModelUtils.getTokenText(reInode);
+						importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
+						String splitPackageName[]=packageName.split("\\.");
+						if(splitPackageName.length==1){ 
+							splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
+						}
+						addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
+					}
+				}else if((reusedNode==null)&&(reusedConNode!=null)){
+					List<INode> reConNodes = NodeModelUtils.findNodesForFeature(reusedConNode, Henshin_textPackage.Literals.CONDITION_NODE__TYPE);
+					if(reConNodes.size()>0){
+						INode reConInode = reConNodes.get(0);
+						String packageName = NodeModelUtils.getTokenText(reConInode);
+						importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
+						String splitPackageName[]=packageName.split("\\.");
+						if(splitPackageName.length==1){ 
+							splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
+						}
+						addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
+					}
+				} 
 			}
-			if((reusedNode!=null)&&(reusedConNode==null)){
-				List<INode> reNodes = NodeModelUtils.findNodesForFeature(reusedNode, Henshin_textPackage.Literals.NODE__NODETYPE);
-		        INode reInode = reNodes.get(0);
-		        String packageName = NodeModelUtils.getTokenText(reInode);
-				importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
-				String splitPackageName[]=packageName.split("\\.");
-				if(splitPackageName.length==1){ 
-					splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
-				}
-				addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
-			}else if((reusedNode==null)&&(reusedConNode!=null)){
-				List<INode> reConNodes = NodeModelUtils.findNodesForFeature(reusedConNode, Henshin_textPackage.Literals.CONDITION_NODE__TYPE);
-		        INode reConInode = reConNodes.get(0);
-		        String packageName = NodeModelUtils.getTokenText(reConInode);
-				importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
-				String splitPackageName[]=packageName.split("\\.");
-				if(splitPackageName.length==1){ 
-					splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
-				}
-				addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
-			} 
 		}
 		if(context instanceof MultiRuleReuseNode){
 			MultiRuleReuseNode node=(MultiRuleReuseNode) context;
 			List<INode> nodes = NodeModelUtils.findNodesForFeature(node, Henshin_textPackage.Literals.MULTI_RULE_REUSE_NODE__NAME);
-			INode inode = nodes.get(0);
-	        String nodeName = NodeModelUtils.getTokenText(inode);
+			if(nodes.size()>0){
+				INode inode = nodes.get(0);
+
+				String nodeName = NodeModelUtils.getTokenText(inode);
 	        
-			Node reusedNode=null;
+				Node reusedNode=null;
 			
-			boolean nodeFound=false;
-			EObject container=node.eContainer().eContainer();
-			while (nodeFound!=true){
-				if(container instanceof Graph){
-					Graph graph=(Graph) container;
-					for(GraphElements element:graph.getGraphElements()){
-						if(element instanceof Node){
-							if(((Node) element).getName().equals(nodeName)){
-								reusedNode=(Node) element;
-								nodeFound=true;
+				boolean nodeFound=false;
+				EObject container=node.eContainer().eContainer();
+				while (nodeFound!=true){
+					if(container instanceof Graph){
+						Graph graph=(Graph) container;
+						for(GraphElements element:graph.getGraphElements()){
+							if(element instanceof Node){
+								if(((Node) element).getName().equals(nodeName)){
+									reusedNode=(Node) element;
+									nodeFound=true;
+								}
 							}
 						}
 					}
+					container=container.eContainer();
+					if(container instanceof Model){
+						break;
+					}
 				}
-				container=container.eContainer();
-				if(container instanceof Model){
-					break;
+				if(reusedNode!=null){
+					List<INode> reNodes = NodeModelUtils.findNodesForFeature(reusedNode, Henshin_textPackage.Literals.NODE__NODETYPE);
+					if(reNodes.size()>0){
+						INode reInode = reNodes.get(0);
+						String packageName = NodeModelUtils.getTokenText(reInode);
+						importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
+						String splitPackageName[]=packageName.split("\\.");
+						if(splitPackageName.length==1){ 
+							splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
+						}
+						addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
+					}
 				}
 			}
-			if(reusedNode!=null){
-				List<INode> reNodes = NodeModelUtils.findNodesForFeature(reusedNode, Henshin_textPackage.Literals.NODE__NODETYPE);
-		        INode reInode = reNodes.get(0);
-		        String packageName = NodeModelUtils.getTokenText(reInode);
-				importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
-				String splitPackageName[]=packageName.split("\\.");
-				if(splitPackageName.length==1){ 
-					splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
-				}
-				addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
-			}
 		}
 		if(context instanceof Edge){
 			Edge edge=(Edge) context;
 			List<INode> sourceNodes = NodeModelUtils.findNodesForFeature(edge, Henshin_textPackage.Literals.EDGE__SOURCE);
-			INode inode = sourceNodes.get(0);
-	        String nodeName = NodeModelUtils.getTokenText(inode);
-			Node sourceNode=null;
-			boolean nodeFound=false;
-			EObject container=edge.eContainer();
-			while (nodeFound!=true){
-				if(container instanceof Graph){
-					Graph graph=(Graph) container;
-					for(GraphElements element:graph.getGraphElements()){
-						if(element instanceof Node){
-							if(((Node) element).getName().equals(nodeName)){
-								sourceNode=(Node) element;
-								nodeFound=true;
+			if(sourceNodes.size()>0){
+				INode inode = sourceNodes.get(0);
+				String nodeName = NodeModelUtils.getTokenText(inode);
+				Node sourceNode=null;
+				boolean nodeFound=false;
+				EObject container=edge.eContainer();
+				while (nodeFound!=true){
+					if(container instanceof Graph){
+						Graph graph=(Graph) container;
+						for(GraphElements element:graph.getGraphElements()){
+							if(element instanceof Node){
+								if(((Node) element).getName()!=null){
+									if(((Node) element).getName().equals(nodeName)){
+										sourceNode=(Node) element;
+										nodeFound=true;
+									}
+								}
 							}
 						}
 					}
+					container=container.eContainer();
+					if(container instanceof Model){
+						break;
+					}
 				}
-				container=container.eContainer();
-				if(container instanceof Model){
-					break;
+				if(sourceNode!=null){
+					List<INode> reNodes = NodeModelUtils.findNodesForFeature(sourceNode, Henshin_textPackage.Literals.NODE__NODETYPE);
+					if(reNodes.size()>0){
+						INode reInode = reNodes.get(0);
+						String packageName = NodeModelUtils.getTokenText(reInode);
+						importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
+						String splitPackageName[]=packageName.split("\\.");
+						if(splitPackageName.length==1){ 
+							splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
+						}
+						addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
+					}
 				}
 			}
-			if(sourceNode!=null){
-				List<INode> reNodes = NodeModelUtils.findNodesForFeature(sourceNode, Henshin_textPackage.Literals.NODE__NODETYPE);
-		        INode reInode = reNodes.get(0);
-		        String packageName = NodeModelUtils.getTokenText(reInode);
-				importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
-				String splitPackageName[]=packageName.split("\\.");
-				if(splitPackageName.length==1){ 
-					splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
-				}
-				addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
-			} 
 		}
 		if(context instanceof ConditionEdge){
 			ConditionEdge edge=(ConditionEdge) context;
 			List<INode> sourceNodes = NodeModelUtils.findNodesForFeature(edge, Henshin_textPackage.Literals.CONDITION_EDGE__SOURCE);
-			INode inode = sourceNodes.get(0);
-	        String nodeName = NodeModelUtils.getTokenText(inode);
-			Node sourceNode=null;
-			ConditionNode conSourceNode=null;
-			boolean nodeFound=false;
-			EObject container=edge.eContainer();
-			while (nodeFound!=true){
-				if(container instanceof Graph){
-					Graph graph=(Graph) container;
-					for(GraphElements element:graph.getGraphElements()){
-						if(element instanceof Node){
-							if(((Node) element).getName().equals(nodeName)){
-								sourceNode=(Node) element;
-								nodeFound=true;
+			if(sourceNodes.size()>0){
+				INode inode = sourceNodes.get(0);
+				String nodeName = NodeModelUtils.getTokenText(inode);
+				Node sourceNode=null;
+				ConditionNode conSourceNode=null;
+				boolean nodeFound=false;
+				EObject container=edge.eContainer();
+				while (nodeFound!=true){
+					if(container instanceof Graph){
+						Graph graph=(Graph) container;
+						for(GraphElements element:graph.getGraphElements()){
+							if(element instanceof Node){
+								if(((Node) element).getName().equals(nodeName)){
+									sourceNode=(Node) element;
+									nodeFound=true;
+								}
+							}
+						}
+					}else if(container instanceof ConditionGraph){
+						ConditionGraph graph=(ConditionGraph) container;
+						for(ConditionGraphElements element:graph.getConditionGraphElements()){
+							if(element instanceof ConditionNode){
+								if(((ConditionNode) element).getName().equals(nodeName)){
+									conSourceNode=(ConditionNode) element;
+									nodeFound=true;
+								}
 							}
 						}
 					}
-				}else if(container instanceof ConditionGraph){
-					ConditionGraph graph=(ConditionGraph) container;
-					for(ConditionGraphElements element:graph.getConditionGraphElements()){
-						if(element instanceof ConditionNode){
-							if(((ConditionNode) element).getName().equals(nodeName)){
-								conSourceNode=(ConditionNode) element;
-								nodeFound=true;
-							}
-						}
+					container=container.eContainer();
+					if(container instanceof Model){
+						break;
 					}
 				}
-				container=container.eContainer();
-				if(container instanceof Model){
-					break;
+				if((sourceNode!=null)&&(conSourceNode==null)){
+					List<INode> sourNodes = NodeModelUtils.findNodesForFeature(sourceNode, Henshin_textPackage.Literals.NODE__NODETYPE);
+					if(sourNodes.size()>0){
+						INode sourInode = sourNodes.get(0);
+						String packageName = NodeModelUtils.getTokenText(sourInode);
+						importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
+						String splitPackageName[]=packageName.split("\\.");
+						if(splitPackageName.length==1){ 
+							splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
+						}
+						addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
+					}
+				}else if((sourceNode==null)&&(conSourceNode!=null)){
+					List<INode> sourConNodes = NodeModelUtils.findNodesForFeature(conSourceNode, Henshin_textPackage.Literals.CONDITION_NODE__TYPE);
+					if(sourConNodes.size()>0){
+						INode sourConInode = sourConNodes.get(0);
+						String packageName = NodeModelUtils.getTokenText(sourConInode);
+						importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
+						String splitPackageName[]=packageName.split("\\.");
+						if(splitPackageName.length==1){ 
+							splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
+						}
+						addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
+					}
 				}
 			}
-			if((sourceNode!=null)&&(conSourceNode==null)){
-				List<INode> sourNodes = NodeModelUtils.findNodesForFeature(sourceNode, Henshin_textPackage.Literals.NODE__NODETYPE);
-		        INode sourInode = sourNodes.get(0);
-		        String packageName = NodeModelUtils.getTokenText(sourInode);
-				importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
-				String splitPackageName[]=packageName.split("\\.");
-				if(splitPackageName.length==1){ 
-					splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
-				}
-				addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
-			}else if((sourceNode==null)&&(conSourceNode!=null)){
-				List<INode> sourConNodes = NodeModelUtils.findNodesForFeature(conSourceNode, Henshin_textPackage.Literals.CONDITION_NODE__TYPE);
-		        INode sourConInode = sourConNodes.get(0);
-		        String packageName = NodeModelUtils.getTokenText(sourConInode);
-				importedNamespaceResolvers.add(createImportedNamespaceResolver(packageName, ignoreCase));
-				String splitPackageName[]=packageName.split("\\.");
-				if(splitPackageName.length==1){ 
-					splitPackageName=(getPackageName(packageName,context)+"."+packageName).split("\\.");
-				}
-				addSuperclasses(splitPackageName,context,ignoreCase,importedNamespaceResolvers);
-			} 	
 		}
 	    return importedNamespaceResolvers;
 	}
@@ -343,3 +372,4 @@
 		return names;
 	}
 }
+
diff --git a/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/validation/Henshin_textValidator.xtend b/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/validation/Henshin_textValidator.xtend
index 193b52d..ba71525 100644
--- a/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/validation/Henshin_textValidator.xtend
+++ b/plugins/org.eclipse.emf.henshin.text/src/org/eclipse/emf/henshin/text/validation/Henshin_textValidator.xtend
@@ -4,69 +4,71 @@
 package org.eclipse.emf.henshin.text.validation
 
 import com.google.common.collect.Iterables
+import com.google.inject.Inject
+import java.lang.reflect.Field
+import java.lang.reflect.Method
+import java.util.ArrayList
+import java.util.List
+import org.eclipse.emf.ecore.EClass
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.EReference
+import org.eclipse.emf.henshin.text.henshin_text.AndExpression
+import org.eclipse.emf.henshin.text.henshin_text.Attribute
 import org.eclipse.emf.henshin.text.henshin_text.Call
+import org.eclipse.emf.henshin.text.henshin_text.ComparisonExpression
+import org.eclipse.emf.henshin.text.henshin_text.ConditionEdge
+import org.eclipse.emf.henshin.text.henshin_text.ConditionGraph
+import org.eclipse.emf.henshin.text.henshin_text.ConditionGraphRef
+import org.eclipse.emf.henshin.text.henshin_text.ConditionNode
+import org.eclipse.emf.henshin.text.henshin_text.ConditionReuseNode
 import org.eclipse.emf.henshin.text.henshin_text.ConditionalUnit
+import org.eclipse.emf.henshin.text.henshin_text.EPackageImport
+import org.eclipse.emf.henshin.text.henshin_text.Edge
+import org.eclipse.emf.henshin.text.henshin_text.Edges
+import org.eclipse.emf.henshin.text.henshin_text.EqualityExpression
+import org.eclipse.emf.henshin.text.henshin_text.Expression
 import org.eclipse.emf.henshin.text.henshin_text.Formula
+import org.eclipse.emf.henshin.text.henshin_text.Graph
 import org.eclipse.emf.henshin.text.henshin_text.Henshin_textPackage
 import org.eclipse.emf.henshin.text.henshin_text.IndependentUnit
+import org.eclipse.emf.henshin.text.henshin_text.IntegerValue
+import org.eclipse.emf.henshin.text.henshin_text.IteratedUnit
+import org.eclipse.emf.henshin.text.henshin_text.JavaAttributeValue
+import org.eclipse.emf.henshin.text.henshin_text.JavaClassValue
+import org.eclipse.emf.henshin.text.henshin_text.JavaImport
+import org.eclipse.emf.henshin.text.henshin_text.Logic
 import org.eclipse.emf.henshin.text.henshin_text.LoopUnit
+import org.eclipse.emf.henshin.text.henshin_text.Match
+import org.eclipse.emf.henshin.text.henshin_text.MinusExpression
+import org.eclipse.emf.henshin.text.henshin_text.Model
+import org.eclipse.emf.henshin.text.henshin_text.MulOrDivExpression
+import org.eclipse.emf.henshin.text.henshin_text.MultiRule
+import org.eclipse.emf.henshin.text.henshin_text.MultiRuleReuseNode
 import org.eclipse.emf.henshin.text.henshin_text.Node
+import org.eclipse.emf.henshin.text.henshin_text.NotExpression
+import org.eclipse.emf.henshin.text.henshin_text.NumberValue
+import org.eclipse.emf.henshin.text.henshin_text.OrExpression
+import org.eclipse.emf.henshin.text.henshin_text.Parameter
+import org.eclipse.emf.henshin.text.henshin_text.ParameterKind
+import org.eclipse.emf.henshin.text.henshin_text.ParameterValue
+import org.eclipse.emf.henshin.text.henshin_text.PlusExpression
 import org.eclipse.emf.henshin.text.henshin_text.PriorityUnit
 import org.eclipse.emf.henshin.text.henshin_text.Rule
 import org.eclipse.emf.henshin.text.henshin_text.Unit
 import org.eclipse.emf.henshin.text.henshin_text.UnitElement
+import org.eclipse.emf.henshin.text.henshin_text.impl.ANDImpl
 import org.eclipse.emf.henshin.text.henshin_text.impl.CheckDanglingImpl
 import org.eclipse.emf.henshin.text.henshin_text.impl.ConditionsImpl
 import org.eclipse.emf.henshin.text.henshin_text.impl.GraphImpl
 import org.eclipse.emf.henshin.text.henshin_text.impl.InjectiveMatchingImpl
 import org.eclipse.emf.henshin.text.henshin_text.impl.JavaImportImpl
+import org.eclipse.emf.henshin.text.henshin_text.impl.NotImpl
+import org.eclipse.emf.henshin.text.henshin_text.impl.ORorXORImpl
 import org.eclipse.emf.henshin.text.henshin_text.impl.RollbackImpl
 import org.eclipse.emf.henshin.text.henshin_text.impl.StrictImpl
-import org.eclipse.xtext.validation.Check
-import org.eclipse.emf.henshin.text.henshin_text.ConditionGraph
-import java.util.ArrayList
-import org.eclipse.emf.henshin.text.henshin_text.Logic
-import java.util.List
-import org.eclipse.emf.henshin.text.henshin_text.ConditionGraphRef
-import org.eclipse.emf.henshin.text.henshin_text.Graph
-import org.eclipse.emf.henshin.text.henshin_text.Edge
-import org.eclipse.emf.henshin.text.henshin_text.ConditionNode
-import org.eclipse.emf.henshin.text.henshin_text.impl.ANDImpl
-import org.eclipse.emf.henshin.text.henshin_text.impl.ORorXORImpl
-import org.eclipse.emf.henshin.text.henshin_text.impl.NotImpl
-import org.eclipse.emf.henshin.text.henshin_text.ConditionReuseNode
-import org.eclipse.emf.henshin.text.henshin_text.Edges
-import org.eclipse.emf.henshin.text.henshin_text.MultiRuleReuseNode
-import org.eclipse.emf.henshin.text.henshin_text.MultiRule
-import org.eclipse.emf.henshin.text.henshin_text.ConditionEdge
-import org.eclipse.emf.henshin.text.henshin_text.IteratedUnit
-import org.eclipse.emf.ecore.EClass
-import com.google.inject.Inject
-import org.eclipse.emf.henshin.text.typesystem.Henshin_textTypeProvider
-import org.eclipse.emf.henshin.text.henshin_text.NotExpression
-import org.eclipse.emf.henshin.text.henshin_text.MulOrDivExpression
-import org.eclipse.emf.henshin.text.henshin_text.MinusExpression
-import org.eclipse.emf.henshin.text.henshin_text.AndExpression
-import org.eclipse.emf.henshin.text.henshin_text.OrExpression
-import org.eclipse.emf.henshin.text.henshin_text.EqualityExpression
-import org.eclipse.emf.henshin.text.henshin_text.ComparisonExpression
-import org.eclipse.emf.henshin.text.henshin_text.PlusExpression
 import org.eclipse.emf.henshin.text.typesystem.Henshin_textType
-import org.eclipse.emf.ecore.EReference
-import org.eclipse.emf.henshin.text.henshin_text.Expression
-import org.eclipse.emf.henshin.text.henshin_text.Attribute
-import org.eclipse.emf.henshin.text.henshin_text.ParameterValue
-import org.eclipse.emf.henshin.text.henshin_text.JavaClassValue
-import org.eclipse.emf.henshin.text.henshin_text.JavaImport
-import java.lang.reflect.Method
-import org.eclipse.emf.ecore.EObject
-import org.eclipse.emf.henshin.text.henshin_text.Match
-import org.eclipse.emf.henshin.text.henshin_text.Model
-import org.eclipse.emf.henshin.text.henshin_text.JavaAttributeValue
-import java.lang.reflect.Field
-import org.eclipse.emf.henshin.text.henshin_text.EPackageImport
-import org.eclipse.emf.henshin.text.henshin_text.NumberValue
-import org.eclipse.emf.henshin.text.henshin_text.IntegerValue
+import org.eclipse.emf.henshin.text.typesystem.Henshin_textTypeProvider
+import org.eclipse.xtext.validation.Check
 
 /**
  * This class contains custom validation rules. 
@@ -78,24 +80,39 @@
 	@Inject extension Henshin_textTypeProvider
 	
 	/**
- 	* Fehler wenn einem Unit- oder Regelaufruf nicht genügend Parameter übergeben werden oder den falschen Typ besitzen
+ 	* Check that the number and type of parameters match in a unit or rule call
+ 	* This ignores VAR variables in the to-be-called unit / rule (call.elementCall) as they denote local variables
  	* 
- 	* @param call Zu überprüfender Aufruf
+ 	* @param call to-be-checked call
  	*/
 	@Check
 	def checkCallParameter(Call call){
-		if(call.elementCall.parameters.size!=call.parameters.size){
+		if(call.elementCall.parameters.filter[kind != ParameterKind.VAR].size!=call.parameters.size){
 			error("Bad Parameter Count.'",  Henshin_textPackage::eINSTANCE.call_ElementCall)
 		}else{
-			for(var i=0;i<call.elementCall.parameters.size;i++){
-				if(typeFor(call.elementCall.parameters.get(i).type)!=typeFor(call.parameters.get(i).type)){
-					error("Call expected " +typeFor(call.elementCall.parameters.get(i).type).toString+ " type, but was " +typeFor(call.parameters.get(i).type).toString+".'",call, Henshin_textPackage::eINSTANCE.call_Parameters)
+			for(var i=0;i<call.elementCall.parameters.filter[kind != ParameterKind.VAR].size;i++){
+				val param = call.elementCall.parameters.get(i)
+				if(typeFor(param.type)!=typeFor(call.parameters.get(i).type)){
+					error("Call expected " +typeFor(param.type).toString+ " type, but was " +typeFor(call.parameters.get(i).type).toString+".'",call, Henshin_textPackage::eINSTANCE.call_Parameters)
 				}
 			}
 		}
 	}
 	
-
+	
+	/** 
+	 * Warning if a parameter has the parameter kind UNKNOWN which is deprecated.
+	 * 
+	 * @param param to be checked parameter
+	 */
+	 @Check
+	 def checkParameterKind(Parameter param)
+	 {
+		 if (param.kind == ParameterKind.UNKNOWN)
+		 {
+		 	warning("Parameter " + param.name + " should have a parameter kind of IN, INOUT, OUR or VAR. Specifying no parameter kind is deprecated.", param, Henshin_textPackage.Literals.PARAMETER__KIND)
+		 }
+	 }
 	
 	
 	
diff --git a/pom.xml b/pom.xml
index ba2d3e2..f743c4e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,7 @@
      <id>eclipse-orbit</id>
      <name>eclipse orbit for AGG</name>
      <layout>p2</layout>
-     <url>http://download.eclipse.org/tools/orbit/downloads/drops/S20151204220443/repository/</url>
+     <url>http://download.eclipse.org/tools/orbit/downloads/drops/R20160520211859/repository/</url>
    </repository>
   </repositories>
 
@@ -57,4 +57,3 @@
   </build>
 
 </project>
-